每次访问结果页面时都会复制AJAX请求结果

时间:2011-11-05 17:20:53

标签: jquery ajax mobile

我正在使用jQuery Mobile和AJAX构建一个webapp,以便在PHP的帮助下从服务器中提取SQL。

回调很好,因为它显示了我想要的正确值。问题是每次访问页面时,相同的数据都会附加到列表中,从而产生重复数据。

这是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,但结果相同。我错过了什么?

3 个答案:

答案 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);
        });
}

答案 1 :(得分:2)

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

答案 2 :(得分:2)

需要研究的两个方面。

  1. 当您收到新闻时,请立即通过$('#currentNews').empty()清除成功回拨中的当前新闻。
  2. 确保您没有在事故中两次调用ajax调用。是否有任何回调或代码片段使这个ajax调用发生两次?