首页 > 解决方案 > 从 jQuery 运行 PHP 脚本,然后提交表单

问题描述

在提交consent表单时,我需要运行 PHP 脚本。脚本运行后,我想像往常一样提交consent表单。

我曾认为类似于以下内容的东西会起作用:

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

标签: javascriptphpjqueryajax

解决方案


这将导致submit事件循环,因为您的事件侦听器总是会一次又一次地被触发。改用one,只听第一次提交:

$('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;
});

防止竞争条件和其他问题的另一个想法是,不要submit在表单中使用按钮。只需使用普通按钮,让 js 执行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();
    });
});

推荐阅读