Создайте массив в jquery и проверьте, является ли он элементом - PullRequest
0 голосов
/ 13 апреля 2011

После получения некоторых данных, используя 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. Создать массив для хранения data.id
  3. Цикл внутри данных из ajax
  4. Проверить, находится ли data.id в массиве, созданном в [2]
  5. Если id не в массиве, я сохраняю его и добавляю некоторые данные

step 4 это не работает и часть 5 (сохранение в массив)

Есть идеи?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Функция inArray использует оператор сравнения идентификаторов (===).

Это вызовет проблемы, если данные вернули идентификатор в виде строки, но вы интерпретируете его как число.

"9" ==== 9 <- False </p>

"9" == 9 <- True </p>

0 голосов
/ 13 апреля 2011

Я попробовал ваш код, и он прекрасно работает:

http://jsfiddle.net/Jfq6d/

Вы должны проверить, что данные, которые вы получаете, действительно выглядят так, как вы ожидаете.Например, вы можете использовать вкладку Net в аддоне FireBug в Firefox, чтобы проверить ответ, который вы получаете при вызове AJAX.

Edit:

Поскольку вы хотите повторно использовать функцию,чтобы создать массив вне функции:

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>");
      }
    });
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...