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();
});
});
researchajax
这是错误的,提交时的事件调用的是一个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();
});