2011-11-26 81 views
1

我有一个MVC3应用程序使用JQUERY弹出对话框对网格线进行AJAX编辑,然后使用另一个Ajax调用立即刷新网格。 请参阅下面的JQuery部分。我想要有一个功能来弹出编辑实体,如电话号码和电子邮件,并希望标准化,因此动态对话框。JQuery动态对话框问题

现在弹出工程和更新/创建和网格刷新正常工作。但是我有一个弹出式反复出现的问题显示旧的值,并在调查我发现了线

success: function (r) { 
       $("#" + listEditElement).html(r.data); 
       alert("Grid done"); 
       $("#" + resultElement).dialog('close'); 
      }, 

将导致问题。如果我删除$("#" + listEditElement).html(r.data);这是使用ajax返回数据填充网格的问题,在Popup disappers中显示较旧的值。另一个奇怪的是Popup没有被“关闭”呼叫关闭。但是,如果我将“关闭”呼叫移至.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

听起来好像行

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

是失败(如r.data无效HTML),从而引发错误

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

;从未得到调用。

你可以把它包装在一个try/catch中,看看它是否阻止它没有运行关闭线。