2011-11-05 69 views
0

我正在使用jQuery Mobile和AJAX构建一个web应用程序,以便在PHP的帮助下从服务器中提取SQL。AJAX请求结果每次都访问结果页

回调没问题,因为它显示我想要的正确值。问题在于每次访问页面时,相同的数据将被添加到列表中,从而创建重复项。

这是AJAX查询:

function getNews() { 
    $.ajax({ 
    url: 'http:mylivesite/news_ajax.php?', 
    dataType: 'jsonp', 
    jsonp: 'jsoncallback', 
    timeout: 5000, 
    success: function(data, status) { 
     $.each(data, function(i, item){ 
     var newNews = '<li>'+ 
     '<p>'+item.title+'</p>'+ 
     '<p>'+item.content+'</p>'+ 
     '</li>'; 
     $('#currentNews').append(newNews); 
     }); 
    }, 
    error: function() { 
     output.text('There was an error loading the data.'); 
    } 
    }); 
} 

我加入cache: false,但相同的结果。我错过了什么?

+0

这个测试用例甚至没有语法上的有效性。展示你真实的一面。 –

回答

2

那么,当你的东西append东西。东西得到appended

Empty目标元件首先如果是这样的语义,你需要:

success: function(data, status) { 
     $('#currentNews').empty(); // <----------------- 
     $.each(data, function(i, item) { 
      var newNews = '<li>'+ 
           '<p>'+item.title+'</p>'+ 
           '<p>'+item.content+'</p>'+ 
           '</li>'; 
      $('#currentNews').append(newNews); 
     }); 
} 
+0

ahh yay !!!我在想什么......这真的有助于@Tomalak ..非常感谢。 –

+0

@Saint:没问题。 –

2

使用$('#currentNews').empty();发出请求之前。

2

有两个领域需要研究。

  1. 当您收到消息时,请立即清除当前消息条目,并在$('#currentNews').empty()上成功回拨。
  2. 确保您在事故中不会调用ajax调用两次。是否有任何回调或代码片断使这个Ajax调用发生两次?
+0

听起来像他的应用程序_designed_多次调用AJAX请求,这很好。考虑一个定时的“刷新”功能,保持用户界面的状态与服务器的模糊同步。 –