2011-09-08 23 views
2

我有一個標準的jQuery AJAX功能:爲什麼這個html不使用jQuery更新?

$.ajax({ 

    // blah blah... 

    success: function(data) 
    { 
     if(data) 
     { 
      $('.title').text(data.title); 
      $('.description').text(data.description); 
      if (data.image) 
      { 
       $('div#image').html('<a href="'+data.image+'" class="button">View Image</a>');      
      } 
     } 
    } 

}); 

服務器響應是一個JSON對象。 data.image返回圖片位置的網址。我只是堅持在一個鏈接,堅持在一個div內。

每次用戶點擊圖庫上的「下一個」或「上一個」按鈕時,都會運行此ajax調用。問題是,第一次鏈接加載後,它保持緩存或什麼,因爲即使當我點擊下一個或prev和其他一切更新如標題和描述,該鏈接不會更新。它總是指向第一個圖像。

真正奇怪的是,如果我替換此:

$('div#image').html('<a href="'+data.image+'" class="button">View Image</a>'); 

有:

$('div#image').html(data.image); 

它工作正常,一個新的URL每次Ajax調用運行加載。但是,如果我把它放在一些HTML中,那麼它會加載一次並保持緩存或某物。

有誰知道爲什麼會發生這種情況?

+1

我懷疑這是你的問題,但你不應該只將'data.image'連接到你的HTML字符串中。想一想如果'data.image'包含一個引號或其他任何在HTML中有特殊含義的字符會發生什麼。相反,您可能希望設置不帶'href'的HTML,然後找到創建的'a'元素並使用'attr'來設置'href'。 – icktoofay

+0

你是否將一個事件監聽器附加到'#image a'? – icktoofay

回答

1
$.ajaxSetup({ cache: false }); 

嘗試把在腳本中的某處呼叫

或者在你的$就調用之前把參數

cache: true 
2

湯姆,這裏有沒有足夠的信息來真正確定什麼是錯誤的,但如果簡單地引用data.image本身工作正常,爲什麼不重新說出你的函數使用它的方式。

$.ajax({ 
    // blah blah... 
    success: function(data) 
    { 
     if(data) 
     { 
      $('.title').text(data.title); 
      $('.description').text(data.description); 
      if (data.image) 
      { 
       $('div#image a').attr('href',data.image);      
      } 
     } 
    } 
}); 
相關問題