我遇到了 JQuery 表单提交问题,并且在任何地方都找不到答案。如果有人能够阐明这一点,我们将不胜感激。
问题:我第一次提交表单时,效果很好。但如果我第二次提交相同的表单,它会发送 2 个请求,第三次会发送 3 个请求,依此类推。
Script:
function postInvokeFunctionForm(functionId){
var formId = "#"+functionId+"-form";
var formUrl = "invokeFunction.html?functionId="+functionId
$(formId).submit(
function(){
$.ajax({
type: 'POST',
url: formUrl,
data: $(formId).serialize(),
success: function (data){
alert('successfully invoked function!' + data);
}
});
return false;
}
);
}
动态生成的表单:
<form action="" method="post" id="xxxxx-form" class="invokeFunctionForm">
<input name="functionId" value="xxxxx" readonly="readonly" style="visibility: hidden;" type="text">
<input value="Invoke" onclick="postInvokeFunctionForm(xxxxx);" type="submit">
</form>
这显然是不可取的。我能想到的唯一解决方案是在提交后重新渲染(动态生成的)表单,但这将是一项昂贵的操作。
这是 JQuery ajax 提交的已知问题还是我遗漏了一些明显的东西?是否可能发生某种形式的递归?
Thanks.
每次单击按钮时,代码都会调用您的函数。在该函数中,该行$(formId).submit(...);
正在将事件绑定到表单的提交操作。每次单击时都会发生这种情况,从而向表单添加多个“提交”事件。你需要unbind http://api.jquery.com/unbind/先行动。所以你可以打电话$(formId).unbind('submit').submit(...);
反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)