2013-05-07 137 views
1

我試圖重新加載一個div,一旦一個函數被點擊並執行。完成後AJAX重新加載div

$('newThread').addEvent('submit', addThread); 

function addThread(e){ 
    e.stop(); 
    var threadRequest = new Request.JSON({ 
     url: 'control.php?action=createThread', 
     onSuccess: createThreadSuccess 
    }).post(this); 
} 

function createThreadSuccess() { 
    new Element('span',{ 
     'text':'Post successful.' 
    }).inject($(threadList)); 

我一直在使用location.reload(true);,但我我糾正說這將刷新整個頁面,而不僅僅是在div我之後?

一旦createThreadSuccess已執行我希望的對答div來重裝,我一直在使用this link的意見,但它似乎並沒有在a jsFiddle

工作請注意我使用MooTools的不是jQuery的

+0

你是什麼意思通過重新加載一個div?什麼是div加載? – Adidi 2013-05-08 00:13:26

回答

0

您無法'重新加載div'。 A div只是整個網頁上的一個元素,並且它本身沒有它從其加載的URL,因此無法重新加載。您可以使用Ajax調用設置/替換div的內容,但這絕對不是「重新加載」 - 您需要明確定義URL以加載其新內容。

如果你想從遠程URL加載它明確地更換div的內容,你應該使用Request.HTML代替Request.JSON,併爲update參數提供的元素(或它的ID):

  • update - (element:defaults to null)在完成請求時插入請求的響應文本的元素。

如果你只是希望替換元素的內容,無需遠程加載,你可以簡單地做:

$('id-of-div').set('text', 'Text to be placed inside the element'); 

或者:

$('id-of-div').set('html', '<p>HTML ending up <em>inside</em> the div</p>'); 

或者建立一個完整的子樹就像你已經撥打new Element一樣。

至於第二個問題:location.reload()只是window.location.reload()的速記,所以是的,它會重新加載整個頁面(或框架)。它可以是因爲實際上窗口或框架具有它被加載的位置。