我有一个MVC3应用程序使用JQUERY弹出对话框对网格线进行AJAX编辑,然后使用另一个Ajax调用立即刷新网格。 请参阅下面的JQuery部分。我希望有一个功能来弹出编辑实体,如电话号码和电子邮件,并希望标准化动态对话框。
现在弹出窗口正常工作,更新/创建和网格刷新正常工作。但是我反复出现Popup显示旧值的问题,在调查时我找到了行
success: function (r) {
$("#" + listEditElement).html(r.data);
alert("Grid done");
$("#" + resultElement).dialog('close');
},
导致问题。如果我删除$("#" + listEditElement).html(r.data)
; whic使用ajax返回数据填充网格在Popup disappers中显示旧值的问题。另一个奇怪的是Popup没有被'Close'调用关闭。但是,如果我将'Close'调用移到.html()行之前,对话框将成功关闭。
我可能做错的任何线索?
function openPopup(elementId, popupFormName) {
$("#" + elementId).dialog({
autoOpen: false,
title: 'Title',
title: $("#" + elementId).attr('title'),
width: 500,
cache: 'false',
height: 'auto',
modal: true,
buttons: {
"Save": function () {
$("#update-message").html('hhhhhhhhhhhhhhha'); //make sure there is nothing on the message before we continue
$("#" + popupFormName).submit();
},
"Cancel": function () {
$(this).dialog("close");
}
}
});
$("#" + elementId).dialog("open");
return false;
}
function closePopup(resultElement, listEditElement, actionURL) {
// var itemId = element.attr("data-tododb-itemid");
var d = null;
// $("#ajax-progress-dialog").dialog("open");
$.ajax({
type: "POST",
url: actionURL,
data: d,
success: function (r) {
$("#" + listEditElement).html(r.data);
alert("Grid done");
$("#" + resultElement).dialog('close');
},
complete: function () {
$("#ajax-progress-dialog").dialog("close");
$("#" + resultElement).dialog("destroy");
},
error: function (req, status, error) {
//do what you need to do here if an error occurs
}
});
答案 0 :(得分:0)
听起来就像线
$("#" + listEditElement).html(r.data);
失败(例如r.data无效的html)并因此抛出错误
$("#" + resultElement).dialog('close');
永远不会被召唤。
你可以将它包装在try / catch中,看看是否会阻止它不运行关闭线。