在jquery中创建一个数组并检查它是否是一个元素

时间:2011-04-13 14:17:21

标签: jquery ajax arrays json

使用ajax&获取一些数据后json我有这个功能

    if(data.length != 0) {
        var arreglo = new Array();
        $.each(data, function(index, data) {
            if (jQuery.inArray(data.id, arreglo) == -1) {
                arreglo.push(data.id);
                $("#envivo").append("<li>Titulo: " + data.titulo + " Link: " + data.link + " Fuente: " + data.fuente + "</li>");
            }
        });
    }
}
$(document).ready(function() {
    var fecha = Math.round((new Date()).getTime() / 1000);
    setInterval(function() {
        $.ajax({
            data: "fecha="+fecha,
            type: "GET",
            dataType: "json",
            url: "data.php",
            success: function(data){
                restults(data);
            }
        });
    }, 5000);
});

我正在尝试做什么

  1. 检查是否从ajax
  2. 检索了任何数据
  3. 创建一个数组来存储data.id
  4. 循环来自ajax的数据
  5. 检查data.id是否在[2]
  6. 中创建的数组中
  7. 如果id不在数组中,我会将其保存到某些数据
  8. step 4它不起作用并且是5的一部分(保存到数组中)

    有什么想法吗?

    提前致谢

2 个答案:

答案 0 :(得分:1)

inArray函数使用标识比较运算符(===)。

如果数据将id作为字符串返回,则会导致问题,但您解释的是数字。

“9”==== 9&lt; - False

“9”== 9&lt; - True

答案 1 :(得分:0)

我已经尝试过你的代码了,它运行得很好:

http://jsfiddle.net/Jfq6d/

您必须检查您获得的数据实际上是否符合预期。例如,您可以使用Firefox中FireBug插件中的Net选项卡来检查您在AJAX调用中获得的响应。

编辑:

如果要重用该函数,则必须在函数外部创建数组:

var arreglo = [];

function restults(data) {
  if(data.length != 0) {
    $.each(data, function(index, data) {
      if (jQuery.inArray(data.id, arreglo) == -1) {
        arreglo.push(data.id);
        $("#envivo").append("<li>Titulo: " + data.titulo + " Link: " + data.link + " Fuente: " + data.fuente + "</li>");
      }
    });
  }
}