我有一次提交两个表单的功能。最后(第二个)post 方法在没有 alert() 的情况下不会生效。
你能告诉我我的错误吗。
function formFunction() {
...
$.post($("#form1").attr("action"), $("#form1").serialize() );
$.post($("#form2").attr("action"), $("#form2").serialize() );
//alert('done');
}
更新
函数是这样调用的
<form id="form0" name="form0" onsubmit="formFunction()">
<input id="mainFormValue" type="text">
最佳答案
失败的原因是您没有取消原始表单提交。这意味着当您单击该按钮时,页面正在回发到服务器。您需要做的是阻止原始表单提交完成。
如果您使用 jQuery 添加事件处理程序,则可以使用 preventDefault() 取消表单提交。
function formFunction(e) {
e.preventDefault();
$.post($("#form1").attr("action"), $("#form1").serialize() );
$.post($("#form2").attr("action"), $("#form2").serialize() );
}
将表单提交更改为不显眼的 JavaScript,以获取由 jQuery 设置的正确事件对象。
$("#form0").submit(formFunction);
其他解决方案是在提交中添加一个return false
。只需忽略我上面建议的 preventDefault 行。 [坏主意,但会奏效]
<form id="form0" name="form0" onsubmit="formFunction(); return false">
关于javascript - jquery post 仅在警报后有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13259668/