我有一个表单,当用户点击提交按钮时,我想在执行表单操作(转到下一页)之前运行一个单独的PHP脚本。
当然我可以使用evt.preventDefault();
停止表单操作,然后我可以触发我的jquery $.post
调用但是我无法'恢复'或撤消这个preventDefault调用,就我所见
那么在用户单击提交按钮之后执行处理某些信息的脚本的最佳方法是什么?但是在用户被重定向到表单操作标记中定义的下一页之前?
(当然我可以在下一页继承数据并执行我想要的任何内容 - 但在这种情况下,我希望将其分开)。
感谢您的任何建议!
答案 0 :(得分:2)
您可以尝试这样的事情:
var posted = false;
$('form').on('submit', function(ev) {
if ( ! posted ) {
ev.preventDefault();
$.post(url).done(function() {
posted = true;
$('form').trigger('submit');
});
}
posted = false;
});
或者更简洁,使用extra parameters:
$('form').on('submit', function(ev, posted) {
if ( ! posted ) {
ev.preventDefault();
$.post(url).done(function() {
$('form').trigger('submit', [true]);
});
}
});
答案 1 :(得分:1)
您的$ .post调用可以同步运行,因此在您收到服务器的响应后,表单才会提交。
您可以通过编程方式提交表单,也许可以在回调函数中提交。
答案 2 :(得分:1)
阻止form
上的默认设置,然后在post
成功时运行post
,按ID定位表单并使用.submit();
$('#submit-button').click(function(e) {
e.preventDefault();
$.post({
url:'url',
success:function() {
$('#formid').submit()
}
});
});
答案 3 :(得分:0)
答案 4 :(得分:0)
您可以随时挂钩点击事件,并完成您的工作。 当你完成后,你只需要做$(form).submit();
$("#submitbutton").click(function(e) {
e.preventDefault();
// do your ajax stuff here.. $.post().
$("#form").submit();
});
答案 5 :(得分:0)
你可以使用本机提交函数而不是jQuery的submit()再次通过事件处理程序
$('form').submit(function(e){ // change form to your form id
e.preventDefault();
var el = this; // store this form in variable
$.post('/echo/html/',data,function(d){ // your post function
el.submit(); // trigger native submit function in success callback
});
});
答案 6 :(得分:-2)
在表单标记中,添加onsubmit="myfunction()"