JQuery动态对话框问题

时间:2011-11-26 01:10:50

标签: jquery

我有一个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

        }
    });

1 个答案:

答案 0 :(得分:0)

听起来就像线

  $("#" + listEditElement).html(r.data);

失败(例如r.data无效的html)并因此抛出错误

 $("#" + resultElement).dialog('close');

永远不会被召唤。

你可以将它包装在try / catch中,看看是否会阻止它不运行关闭线。