在注销之前,动态jQuery / JSON菜单是静态的

时间:2012-03-14 19:51:21

标签: jquery jsonp

我在<中有一个新闻文章列表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方面仍然是一个新手,所以如果你能发现我可以改进的任何领域,请不要犹豫,让我知道。谢谢!

1 个答案:

答案 0 :(得分:0)

或者你可以使用html()

在$ .each更改

var newslistitems ....

newslistitems +=

然后在循环之前和循环之后定义newslistiems:

    $('ul#newslist').html(newslistitems);

这样每个项目都被添加到newslistitems变量并在循环结束时被添加到ul#newslist中,html()将清除ul#newslist中的任何先前内容,将其替换为newslistitems变量的内容