2014-06-23 82 views
0
 $.ajax({ 
     type  : 'POST', 
     url   : requesturl, 
     data  : data, 
     dataType : 'json', 
     success  : function(data) { 
      location.reload(); 
      $('#status').append(
           // append something here!! 
      ); 
      $('#loader').hide();     
     } 
    }); 

我遇到了一些問題,迫使頁面先重新加載,然後追加我的元素。我需要這個功能,因爲頁面將在重新載入時重新初始化,並且消除我試圖追加的元素。在ajax成功調用頁面重新加載後追加DOM元素

+0

你不能這樣做。你將不得不附加一個散列或查詢字符串變量,然後檢查它的存在。 – pmandell

+0

這聽起來矛盾。爲什麼當你需要重新加載頁面時,你使用AJAX獲取數據?或者爲什麼你想重新加載頁面? –

+0

當頁面重新加載時,JavaScript代碼*會停止執行*。這是因爲瀏覽器不會繼續爲用戶過去訪問過的頁面執行代碼。通過AJAX *附加內容而無需重新加載頁面*或在頁面重新加載期間修改內容服務器端,然後將其返回給客戶端。 – David

回答

1

一旦您撥打location.reload()就太遲了。腳本在頁面重新加載後不會繼續運行。

這聽起來像你可能需要重新考慮你在這裏的一般方法。一種常用的方法是根本不使用AJAX(因爲您打算重新加載頁面),或讓服務器將頁面呈現爲所需的新狀態,包括將要添加到其中的任何內容。

+0

謝謝,不知道這個。 – user3662516

0

你不應該在這裏使用location.reload()而是使用$('。yoursubClass')。remove()然後調用append方法。

$.ajax({ 
     type  : 'POST', 
     url   : requesturl, 
     data  : data, 
     dataType : 'json', 
     success  : function(data) { 
      $('#status').find('yourRemovableElements').remove(); //modify yourRemovableElements accordingly 
      $('#status').append(
           // append something here!! 
      ); 
      $('#loader').hide();     
     } 
    }); 
+0

這應該可以做到。爲此投票,謝謝。我的方法有點偏離。 – user3662516

+0

如果有用接受我的回答.. –

相關問題