Ad

Run PHP Script From JQuery Then Submit Form

- 1 answer

On submit of a the consent form, I need to run a PHP script. Once the script has run I want to submit the consent form as usual.

I had thought something similar to the following would work:

$(document).on('submit', 'form#consent', function(e) {
  e.preventDefault();
  $.get('http://www.domain.co.uk/test.php', function() {
    console.log('returned');
    $('form#consent').submit();
  });
});
Ad

Answer

This would result in a loop of submit events, because your event listener will always gets triggered over and over again. Use one instead, to only listen to the first submit:

$('form#consent').one('submit', function(e) {
    e.preventDefault();
    $.get('http://www.domain.co.uk/test.php', function() {
        console.log('returned');
        $('form#consent').submit();
    });
    return false;
});

Another idea to prevent race conditions and other problems, don't use a submit button in your form. Just use a normal button and let js do the submit.

// <button class="send">submit form</button>
$('form#consent button.send').one('click', function() {
    $.get('http://www.domain.co.uk/test.php', function() {
        $('form#consent').submit();
    });
});
Ad
source: stackoverflow.com
Ad