2011-09-08 39 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);      
      } 
     } 
    } 
}); 
相关问题