php - 使用 jQuery 从 PHP 获取 JSON 到表中而不附加

标签 php jquery mysql json

好吧,所以我觉得这里有点笨……但是我一直在使用 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/

相关文章:

php - 获取目录 PHP 中的第一个文件

javascript - 每分钟更新一次高排行榜?

javascript - 使用对 html 元素的引用使用 Jquery 添加删除元素

javascript - 表行引用和值传递

MySQL 错误 502 : "SELECT * FROM table WHERE uid=1 ORDER BY id DESC LIMIT 0, 100"; Pagination not working

php - 如何增加mysql_fetch_array指针?

php - 如果用户名不可用,如何禁用表单提交

php - 如何使用 php 链接到 url 中包含变量的页面?

javascript - 如何显示给定范围内最接近的标记?

php - 用于测试和比较 MySQL 速度的脚本