Pillblast
Pillblast

Reputation: 1221

Iterate through Json array

Edit This is the function where I get the response from

$(document).ready(function()
{

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

});

and this is the php snippet that creates the response:

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

if i call alert(response.constructor); I get

function Array() {
    [native code]
}

End Edit

How do I iterate through a json array using jquery or javascript, or whatever works?

the json response i get has this form: [["1","12"],["2","3"],["3","7"]]

I should mention that using response.length; has no effect

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 
}

Sorry for the large number of questions today, but I'm just getting started with Ajax and I get stuck.

Upvotes: 4

Views: 11063

Answers (4)

Anurag
Anurag

Reputation: 141859

Not sure why jQuery answers are posted here, but you should find out why the length property is not working when it should. Posting the jQuery code from one of the answers with hazelnut 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]);
}

Can you post an reproducible example of what you're doing on jsfiddle or some other site?

Upvotes: 0

hunter
hunter

Reputation: 63502

that's not a json array, it's an array of arrays

this should work fine: 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
    });
}

Upvotes: 1

Nemo157
Nemo157

Reputation: 3589

Untested but this should work:

function processSquads(response)
{
  for(var list in response)
  {
    for(var item in response)
    {
      alert(item);
    }
  }
}

Upvotes: 0

Shawn Mclean
Shawn Mclean

Reputation: 57469

With Jquery:

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

This iterates the array and then shows what is in index 0 and 1.

Upvotes: 5

Related Questions