我在<中有一个新闻文章列表li>使用jQuery(.ajax)和JSON动态创建的格式。当我收到JSON数据时,我构造了列表项并将它们附加到父< ul>。
我的问题是,如果用户使用后退按钮然后重新进入“新闻”区域,则会再次获取并附加列表,从而为我提供重复的列表项。有没有办法在jQuery中将.ajax请求限制为一个加载?或者我应该添加所有新闻< li>到会话/本地存储?
代码:
$('#schoolnews').live("click", function(){
$.mobile.showPageLoadingMsg();
var schoolID = sessionStorage.getItem('schoolID');
var entityType = sessionStorage.getItem('entityType');
$.ajax({
url: 'http://www.sycamoreeducation.com/mobile/JSON/getnewslist.php',
data: {schoolID: 'schoolID', entityType: 'entityType'},
dataType: 'jsonp',
jsonp: 'jsoncallback',
timeout: 5000,
success: function(data){
//alert("Success in retreiving JSON News Data!");
$.mobile.changePage('#news');
$.each(data, function(index, value){
var newslistitems = '<li class="newsitem" data-theme="c"><h3>' +value.Subject+ '</h3><p>Posted on: ' +value.Day+ '</p></li>';
$('ul#newslist').append(newslistitems);
});
$('ul#newslist').listview('refresh');
$.mobile.hidePageLoadingMsg();
},
error: function(){
alert('Error Message');
}
}); //end login ajax call
}); //end school news click listener
在jQuery方面仍然是一个新手,所以如果你能发现我可以改进的任何领域,请不要犹豫,让我知道。谢谢!
答案 0 :(得分:0)
或者你可以使用html()
在$ .each更改
内var newslistitems ....
到
newslistitems +=
然后在循环之前和循环之后定义newslistiems:
$('ul#newslist').html(newslistitems);
这样每个项目都被添加到newslistitems变量并在循环结束时被添加到ul#newslist中,html()将清除ul#newslist中的任何先前内容,将其替换为newslistitems变量的内容