Итерация по массиву Json - PullRequest
4 голосов
/ 16 января 2011

Редактировать Это функция, где я получаю ответ от

$(document).ready(function()
{

  $.ajax({
    method: "get",
    url: 'ctr_seearmylist.php',
    dataType: 'jsonp',
    data: 'get=squad',
    success: processSquads
  });

});

и это фрагмент php, который создает ответ:

{..... //iterates throuh a result taken from the database
  $temp[0]=$id;
   $temp[1]=$squad_id;
   $result[]=$temp;
  }
  $result=json_encode($result);
  }
return $result;
}

если я вызову оповещение (response.constructor); Я получаю

function Array() {
    [native code]
}

Конец редактирования

Как перебрать массив json с помощью jquery или javascript, или как там работает?

ответ json, который я получаю, имеет такую ​​форму: [["1", "12"], ["2", "3"], ["3", "7"]]

Я должен упомянуть, что используя response.length; не имеет никакого эффекта

function processSquads(response)
{
  alert (response[0][0]); // works and returns 1 
  alert (response[0]); // works and returns 1,12
  alert (response.length); //doesn't work so I can't iterate 
}

Извините за большое количество вопросов сегодня, но я только начинаю с Ajax и застреваю.

Ответы [ 4 ]

5 голосов
/ 16 января 2011

С Jquery:

var arr = [["1","12"],["2","3"],["3","7"]];
jQuery.each(arr, function() {
  alert(this[0] + " : " + this[1]);
});
//alerts: 1 : 12, etc.

Это повторяет массив, а затем показывает, что находится в индексах 0 и 1.

1 голос
/ 16 января 2011

это не массив json, это массив массивов

это должно работать нормально: http://jsfiddle.net/w6HUV/2/

var array = [["1", "12"], ["2", "3"], ["3", "7"]];

processSquads(array);

function processSquads(response) {
    alert(response[0][0]); // 1
    alert(response[0]); // 1, 12
    alert(response.length); // 3

    $(array).each(function(i){
        alert(response[i]); // 1,12 - 2,3 - 3,7
    });
}
0 голосов
/ 16 января 2011

Не знаю, почему ответы jQuery публикуются здесь, но вы должны выяснить, почему свойство length не работает, когда должно. Отправка кода jQuery из одного из ответов с помощью фундука JavaScript.

var arr = [["1","12"],["2","3"],["3","7"]];
for(var i = 0; i < arr.length; i++) {
    var item = arr[i];
    console.log(item[0] + " : " + item[1]);
}

Можете ли вы опубликовать воспроизводимый пример того, что вы делаете на jsfiddle или каком-либо другом сайте?

0 голосов
/ 16 января 2011

Не проверено, но это должно работать:

function processSquads(response)
{
  for(var list in response)
  {
    for(var item in response)
    {
      alert(item);
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...