好吧,所以我觉得这里有点笨……但是我一直在使用 AJAX 从 PHP 编码的 JSON 页面获取数据时遇到问题。在找出 PHP 代码和 jQuery 代码的正确组合后,我现在有了一个可以工作的产品……差不多了!
这里的问题是在不重复现有数据的情况下获取要填充的新结果。我知道这是因为我正在使用 tr.append 方法。
这是 doof 部分:
我不知道从 JSON 页面迭代行的正确方法,但不重复每次检查的结果,或者如何将我的代码“翻译”成它。
这是 PHP 代码:
$sth = mysql_query("SELECT * FROM incidents2014 ORDER by id DESC LIMIT 5");
$rows = array();
while($r=mysql_fetch_assoc($sth)){
$rows[]=$r;
}
$b=json_encode($rows, JSON_HEX_TAG);
echo $b;
JSON 输出:
[{"id":"1","date":"date1","time":"time1","city":"city1","fire":"fire1","addy":"addy1","level":"level1","desc":"desc1","ipaddress":"ip1","who":"who1","last_update":"lu1","RSS_time":"rss1","lat":"","lng":""},
{"id":"2","date":"date2","time":"time2","city":"city2","fire":"fire2","addy":"addy2","level":"level2","desc":"desc2","ipaddress":"ip2","who":"who2","last_update":"lu2","RSS_time":"rss2",lat":"","lng":""},
etc...]
jQuery 代码:
$(document).ready(function get(){
$.getJSON('jsontest1.php',
function (json){
var tr;
for (var i = 0; i < json.length; i++){
tr = $('<tr/>');
tr.append("<td id='id'>" + json[i].id + "</td>");
tr.append("<td id='date'>" + json[i].date + "</td>");
tr.append("<td id='time'>" + json[i].time + "</td>");
tr.append("<td id='city'>" + json[i].city + "</td>");
tr.append("<td id='fire'>" + json[i].fire + "</td>");
tr.append("<td id='level'>" + json[i].level + "</td>");
tr.append("<td id='desc'>" + json[i].desc + "</td>");
tr.append("<td id='addy'>" + json[i].addy + "</td>");
tr.append("<td id='who'>" + json[i].who + "</td>");
$('table').append(tr);
}
});
}
// setInterval(get,3000);
});
结果看起来应该是这样,但上述行的分组每 3 秒重复一次(如果未注释)。
我将感谢任何和所有的帮助!!!
谢谢!!! -蒂姆
最佳答案
使用 setInverval,它会不断重复您的 ajax 调用,并且您的成功函数会像您告诉它的那样每 3 秒继续追加一次。您需要某种检查,您的表是否已经有该行。您可以将 id 放入 tr 作为一种检查方式......然后,如果文本已经存在,您可以更新它,如果不存在,则可以附加它。此外,我将您的 ID 更改为类,因为它们将被多次使用
$(document).ready(function get(){
$.getJSON('jsontest1.php',
function (json){
var tr;
for (var i = 0; i < json.length; i++){
var tr = $('#+'json[i].id);
if(tr.length){
tr.find('.id').text(json[i].id);
tr.find('.date').text(json[i].date);
tr.find('.time').text(json[i].time);
tr.find('.city').text(json[i].city);
tr.find('.fire').text(json[i].fire);
tr.find('.level').text(json[i].level);
tr.find('.desc').text(json[i].desc);
tr.find('.addy').text(json[i].addy);
tr.find('.who').text(json[i].who);
}
else {
tr = $('<tr id='+json[i].id+'/>');
tr.append("<td class='id'>" + json[i].id + "</td>");
tr.append("<td class='date'>" + json[i].date + "</td>");
tr.append("<td class='time'>" + json[i].time + "</td>");
tr.append("<td class='city'>" + json[i].city + "</td>");
tr.append("<td class='fire'>" + json[i].fire + "</td>");
tr.append("<td class='level'>" + json[i].level + "</td>");
tr.append("<td class='desc'>" + json[i].desc + "</td>");
tr.append("<td class='addy'>" + json[i].addy + "</td>");
tr.append("<td class='who'>" + json[i].who + "</td>");
$('table').append(tr);
}
}
});
}
setInterval(callAjax,3000);
});
关于php - 使用 jQuery 从 PHP 获取 JSON 到表中而不附加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22077878/