Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从jQuery运行PHP脚本,然后提交表单_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 从jQuery运行PHP脚本,然后提交表单

Javascript 从jQuery运行PHP脚本,然后提交表单,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,在提交同意表单时,我需要运行一个PHP脚本。脚本运行后,我希望像往常一样提交同意表单 我原以为类似于以下的方法会奏效: $(document).on('submit', 'form#consent', function(e) { e.preventDefault(); $.get('http://www.domain.co.uk/test.php', function() { console.log('returned'); $('form#consent').submi

在提交
同意
表单时,我需要运行一个PHP脚本。脚本运行后,我希望像往常一样提交
同意
表单

我原以为类似于以下的方法会奏效:

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

这将导致一个
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;
});
另一个防止比赛条件和其他问题的方法是,不要在表单中使用
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();
    });
});
//提交表单
$('form#approvement button.send')。一('click',function(){
$.get('http://www.domain.co.uk/test.php,函数(){
$(‘同意书’).submit();
});
});

research
ajax
这是错误的,提交时的事件调用的是一个PHP,在返回时您需要(再次)提交表单吗?有什么必要这样做?你的代码中有什么不起作用?`看起来correct@mplungjanPHP脚本已运行,但表单未提交。是否有名为submit的表单字段?那么,谢谢你。这基本上是可行的。出于某种原因,在表单提交按钮的第一次“单击”时,什么也没有发生。如果您再次单击它,它将提交。有什么想法吗?
$('form#approve')[0]。提交()将不会触发提交handler@mplungjan我获得$(…)[0]。提交不是函数这可能是竞争条件。对php脚本的请求运行多长时间?如果在请求完成之前单击submit,您仍然会提交表单。也许可以添加更多的控制台日志以查看脚本的工作情况,并查看网络面板以查看所需的时间。我的回答中还有另一个防止@ccdavies出现这种情况的想法
$('#form').on('beforeSubmit', function(e) {
   //your code
  return false;
}).on('submit', function(e){
    e.preventDefault();
});