Javascript IE中未触发窗体的JQuery序列化
我遇到了一个表单问题,该表单位于jquery对话框中,没有在IE中发布 它在chrome和FF中运行良好,将数据发送到我的MVC控制器,但从IE发送空值 不过,通过调用警报来显示序列化结果,我确实以一种方式实现了它。这将导致表单正确序列化,并将值发送到服务器Javascript IE中未触发窗体的JQuery序列化,javascript,jquery,ajax,internet-explorer,Javascript,Jquery,Ajax,Internet Explorer,我遇到了一个表单问题,该表单位于jquery对话框中,没有在IE中发布 它在chrome和FF中运行良好,将数据发送到我的MVC控制器,但从IE发送空值 不过,通过调用警报来显示序列化结果,我确实以一种方式实现了它。这将导致表单正确序列化,并将值发送到服务器 $("<div id='formModal'><img src='../../Content/images/ajax-loader.gif' /></div>")
$("<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);
$(“”)
.addClass(“对话框”)
.attr(“id”,$(此).attr(“数据对话框id”))
.附件(“正文”)
.对话({
宽度:800,
职位:[300,50],
标题:$(this.attr(“数据对话框标题”),
关闭:函数(){$(this.dialog('destroy').remove();window.location.reload(true);},
莫代尔:是的,
按钮:{
“保存”:函数(){
var formdata=$(“#timeForm”).serialize();
$.post(“/TimeTracker/AddTime”,
$(“#timeForm”).serialize();
警报(formdata);
$(此).dialog(“关闭”);
$(此).dialog(“销毁”);
window.location.reload(true);
返回false;
},
取消:函数(){
$(此).dialog(“关闭”);
$(此).dialog(“销毁”);
}
}
})
.load(this.href);
删除警报后,表单不再具有序列化值
这是我的JQuery脚本中的错误吗?或者其他什么?您有
关闭对话框的事件处理程序,每当您关闭对话框时,它都会重新加载页面窗口.location.reload(true)
在“保存”按钮上,您正在做很多事情,发布表单,关闭对话框,然后再次重新加载页面
如果您真的想在发布表单后重新加载页面,请等待post响应。您可以在其成功处理程序中编写代码。另外,重新加载页面将关闭处理程序,这样您就不必调用$(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");
}
}
这似乎奏效了!我把所有这些对话框关闭在那里,因为我有一个双重提交错误的问题。