2011-03-01 50 views
0

我有一個網頁中的'對象'的網頁。例如:AJAX請求完成後,變量不刷新

OBJ1,OBJ2,OBJ 3,...

每個對象都有一個選項, '編輯',這將打開模態窗口(ui.dialog)和負載(.load())的模板,在哪裏有一些輸入,textareas等來編輯關於對象的信息。有一個按鈕「完成編輯」,它通過AJAX .post()將POST請求發送到PHP文件。之後,必須編輯關於對象的信息。

PHP或MySQL沒有問題,問題只出現在JS中。第一次更新後,一切似乎都沒有問題,但是當我點擊'obj2'來編輯它並按'完成編輯'時,我在其中編寫輸入值的變量來自以前的操作。

obj1。 var1 ='text1'; var2 ='text2';

obj2。 var1 ='text3'; var2 ='text4';

例如在'obj1'中,我發送了下一個數據:'v1':var1,'v2':var2。沒關係。但在'obj2'中它也發送'text1'和'text2',而不是'text3'和'text4'。

我也做了var1.val(「」),但它沒有幫助,第二次它發送的空值:)

代碼:

$(".edit").click(function(){ 
    var modal = $('<div class="dialog" id="dialog-new-message"><div></div></div>'); 
    modal.dialog({ 
     modal: true, 
     width: 300, 
     height: 300, 
     autoOpen: true 
    }); 

    modal.find(">div").load('someurl', function(){ 
     modal.dialog('open'); 
     modal.find("#finish-button").click(function() { 
      var var1 = $('#someid1').val(); 
      var var2 = $('#someid2').val(); 
      $.ajax({ 
       url: 'someurl', 
       type: 'post', 
       data: { 
        'v1' : var1, 
        'v2' : var2 
       }, 
       success: function(data) { 
        modal.dialog('close'); 
        // here is some refresh code to refresh the edited info in the page ... nothing serious 
       } 
      }); 
     }); 
    }); 
}); 

回答

0

我認爲這個問題是你正在重新創建對話框,但你並沒有破壞舊對話框。它可能會從您創建的第一個值中獲取值。嘗試添加close回調到modal.dialog()功能,消除了DIV像這樣:

modal.dialog({ 
    modal: true, 
    width: 300, 
    height: 300, 
    autoOpen: true 
    close: function() { modal.remove(); } //$(this).remove(); Might also work. 
}); 

,使下一次的模態對話框打開的ID內它仍然是唯一的這應該卸下了原有的股利。

您可以通過使用瀏覽器的工具並檢查第二個DOM運行後的DOM看起來是否正確。

編輯
你的其他選擇是保存在一個全局變量對話框,然後檢查是否已經沒有定義。如果它沒有做你在做什麼。如果有,請設置一個變量以告知它正在編輯的項目的ID,並在再次運行.dialog("open");之前將所有文本框重置爲空白。

+0

非常感謝你;) – Dmitry 2011-03-06 16:35:22

+0

@ user629899:不客氣。 – 2011-03-07 04:01:47