Javascript jQuery Mobile仅加载新数据
我在做这个项目是为了学习。目前的任务非常简单: 使用$.getJSON从数据库填充数据。 每n秒检查一次新数据,并将其附加到列表中。 通知用户新的数据更改。 下面是我到目前为止取得的成绩的示例:/Don't忘记运行js 运行示例时,所有问题都将可见 以下是我的JS代码:Javascript jQuery Mobile仅加载新数据,javascript,jquery,refresh,settimeout,jquery-mobile-listview,Javascript,Jquery,Refresh,Settimeout,Jquery Mobile Listview,我在做这个项目是为了学习。目前的任务非常简单: 使用$.getJSON从数据库填充数据。 每n秒检查一次新数据,并将其附加到列表中。 通知用户新的数据更改。 下面是我到目前为止取得的成绩的示例:/Don't忘记运行js 运行示例时,所有问题都将可见 以下是我的JS代码: $(document).bind('pageinit', function(){ var $myList = $( "#myList" ); var newItems = []; function loa
$(document).bind('pageinit', function(){
var $myList = $( "#myList" );
var newItems = [];
function loadList(){
$.getJSON("http://jsbin.com/vayeni/2.js",function(data){
$.each(data, function( index, value ) {
newItems.push( "<li><a>" + value.airline + "</a></li>" );
if(data>newItems){
alert('New Entry');
data=newItems;
}
});
$myList.append( newItems.join( "" ) );
$myList.listview( "refresh" );
setTimeout(loadList,1000);
});
}
loadList();
});
谢谢你的帮助 您的数据比较不正确 您正在复制以下内容:
<li><a>JetBlue</a></li>
<li><a>Continental</a></li>
...
不平等总是存在的
你应该使用另一种方法。例如,如果JSON数组中的id字段是唯一的,则可以将其作为id属性附加到无序列表中的每个项目。例如:
newItems.push( "<li id=\"" + value.id + "\"><a>" + value.airline + "</a></li>" );
下面是编辑后的片段:不错,但看起来像setTimeoutloadList,1000;仍然不加载新数据。我在json文件中添加了新数据,希望它会通知我,但运气不好。这可能是什么原因呢?我刚刚又测试了一次,似乎一切正常。您没有忘记将新数据id更改为唯一的,对吗?是的,具有唯一id的新数据。我在JSbin和IntelXDK中尝试了它。请提供您正在尝试的两个JSbin链接-脚本和json。我在本地对其进行了测试,效果良好。太棒了:如果我想把它提升到一个更复杂的层次呢?能够通知任何data.field的任何更改。例如:{id:9,name:Boris}更改为{id:9,name:Peter}?
newItems.push( "<li id=\"" + value.id + "\"><a>" + value.airline + "</a></li>" );
if (!$myList.find('#' + value.id).length) {
newItems.push( "<li id=\" + value.id + \"><a>" + value.airline + "</a></li>" );
}
if (newItems.length > 0) {
$myList.append( newItems.join( "" ) );
}