我有一个使用jQuery动态生成的表单,如下所示:
<form id="editorform" accept-charset="utf-8" method="post" name="editorform" action="menuupdate">
<div>
<input id="updateItem" type="submit" value="Update"></input>
</div>
</form>
我有jQuery Ajax代码:
$("#editorform").submit(function(event)
{
var urls=$("#editorform").attr('action');
event.preventDefault();
var postData=$("#editorform").serializeArray();
$.ajax({
type:'POST',
url:urls,
data:postData,
async: false,
contentType :'application/x-www-form-urlencoded; charset=UTF-8',
success: function(results){
alert(results);
}
});
return false;
});
ajax调用未执行,而是正在进行正常的表单提交。
有人可以帮助弄清楚这段代码有什么问题吗?
非常感谢任何帮助。
答案 0 :(得分:1)
您说表单是动态生成的。可能是您在表单元素存在之前注册了提交事件处理程序。如果是这种情况,则$("#editorform")
当时不代表任何元素。
您必须在将表单元素添加到页面后绑定submit-event处理程序,或使用事件委派来绑定事件。
尝试更改此内容:
$("#editorform").submit(function(event)
要:
$(document).on('submit', '#editorform', function(event)
此外,我认为您应该拨打.serialize()
而不是.serializeArray()
。