我正在研究列表视图,该列表将显示来自JSON的数据列表(节点)。但是,我能够创建listView,但是,当我再次致电AJAX时,数据将附加到列表视图中。我想:
- 添加从Ajax调用获得的任何新节点(如果有新的节点)
- 如果修改任何文本,则修改当前列表视图的内容。例如,要更新"最后一个看到"计数器时间。
<script>
requestData();
function requestData() {
$.getJSON('../ajax/ajax_nodes.php', function(data) {
console.log(data);
$.each(data, function(i, row) {
console.log(JSON.stringify(row));
console.log( "JSON Data ID: " + row.id );
console.log( "JSON Data Name: " + row.name );
$('#movie-list').append('<li><a href="" data-id="' +
row.id + '" ' + 'id="node_"' + row.Node_ID + '><img src="../images/' +
'alive.png' +'"/><h3>' +
row.name + '</h3><p>' +
'Last seen: ' + row.resta + ' secs</p></a></li>');
});
$('#movie-list').listview('refresh');
// call it again after one second
setTimeout(requestData, 5000);
});
}
</script>
</head>
<body>
<div data-role="page" id="home">
<div data-theme="a" data-role="header">
<h3>
Movie List
</h3>
</div>
<div data-role="content">
<div class="example-wrapper" data-iscroll>
<ul data-role="listview" id="movie-list" data-theme="a">
<!-- javascript will populate this listview -->
</ul>
</div>
</div>
<div data-theme="a" data-role="footer">
<h1>Copyright 2013</h1>
</div>
</div>
好的,我有一个工作解决方案。这个想法是检查其中一个元素是否已经存在(在这种情况下,ID" resta_ node_id"。
如果不存在,则创建(附加)listView
的新行如果确实存在,什么也不做。
function requestData() {
$.getJSON('../xx/xxxx.php', function(data) {
console.log(data);
counter = counter +1
console.log("counter: " + counter)
$.each(data, function(i, row) {
if(document.getElementById("resta_" + Node_ID)){
//console.log("existe");
} else {
//console.log("no existe");
// create the node
$('#movie-list').append('<li><a href="" data-id="' +
row.id + '" ' + 'id="node_"' + row.Node_ID + '><img src="../images/' +
'alive.png' +'"/><h3>' +
row.name + '</h3><p>' +
'Last seen: ' + row.resta + ' secs</p></a></li>');
}
// '<div class="lastseen" id="resta_' + row.Node_ID + '"> Last seen: ' + row.resta + ' secs</div>' +
if (counter > 1){
// update certain values after each timer update
document.getElementById("resta_" + row.Node_ID).innerHTML = "" + resta_texto + "";
document.getElementById("rssi_" + row.Node_ID).innerHTML = "" + rssi + "";
document.getElementById("bat_" + row.Node_ID).innerHTML = "" + battery + " V";
}
});
$('#movie-list').listview('refresh');
// call it again after one second
setTimeout(requestData, 2000);
});
}