我遇到了 jquery 对话框内的表单无法在 IE 中发布的问题。
它在 Chrome 和 FF 中运行良好,将数据发送到我的 MVC Controller ,但从 IE 发送空值。
我确实通过调用警报来显示序列化结果,以一种方式使其工作。这会导致表单正确序列化并将值发送到服务器。
$("<div id='formModal'><img src='../../Content/images/ajax-loader.gif' /></div>")
.addClass("dialog")
.attr("id", $(this).attr("data-dialog-id"))
.appendTo("body")
.dialog({
width: 800,
position: [300, 50],
title: $(this).attr("data-dialog-title"),
close: function () { $(this).dialog('destroy').remove(); window.location.reload(true); },
modal: true,
buttons: {
"Save": function () {
var formdata = $("#timeForm").serialize();
$.post("/TimeTracker/AddTime",
$("#timeForm").serialize());
alert(formdata);
$(this).dialog("close");
$(this).dialog("destroy");
window.location.reload(true);
return false;
},
Cancel: function () {
$(this).dialog("close");
$(this).dialog("destroy");
}
}
})
.load(this.href);
一旦删除警报,表单就不再具有序列化值。
这是我的 JQuery 脚本中的错误吗?还是别的什么?
最佳答案
您有用于对话框的close
事件处理程序,每当您关闭对话框时,它都会重新加载页面window.location.reload(true)
。
在“保存”按钮上,您要做很多事情,发布表单,关闭对话框并再次重新加载页面。
如果您确实想在发布表单后重新加载页面,请等待帖子响应。您可以在其成功处理程序中编写代码。此外,重新加载页面无论如何都会关闭处理程序,因此您不必再次调用 $(this).dialog("close")
,这将触发 close
事件重新加载页面。
试试这个。
buttons: {
"Save": function () {
var formdata = $("#timeForm").serialize();
$.post("/TimeTracker/AddTime",
formdata, function(){
window.location.reload(true);
});
//alert(formdata);
//$(this).dialog("close");
//$(this).dialog("destroy");
//window.location.reload(true);
return false;
},
Cancel: function () {
$(this).dialog("close");
$(this).dialog("destroy");
}
}
关于javascript - JQuery 序列化表单未在 IE 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9317450/