JSON:如何将数组转换为多个数组?

时间:2012-04-29 16:45:35

标签: jquery json each

我从PHP文件返回一个带有200个ID的JSON数组。 (身份证号码)。 我想只有18个theese ID,所以我只发送18个ID到一个新的PHP文件,然后在2秒后,我想将下一个18个ID的JSON发送到新的PHP文件,直到那里不再需要发送的JSON数组中的ID。

    $.get('get.php?randomize=1', function(data) {

        var json = data;

        $("#wallpaper").load('get_random.php?json_18=' + encodeURI(data), hideLoader());    

    });

如您所见,我已将JSON存储在名为json的变量中。但我不知道如何为每个18 ID分开它。我在jQuery中读过.each函数,但我不太了解它。我希望有人可以帮助我。

3 个答案:

答案 0 :(得分:2)

http://jsfiddle.net/2bZHP/4/

var data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var spliceAt= 5;
var trigger = setTimeout(function() {
  var toSend;
  if(data.length>spliceAt)
  {
        var left= data.slice(0,spliceAt);
        var right = data.slice(spliceAt);
        data = right;
        toSend = left;
        setTimeout(arguments.callee, 2000);
  }
  else
  {
      toSend = data;
  }
  //$("#wallpaper").load('get_random.php?json_18=' + encodeURI(toSend), hideLoader());
  alert(toSend);
}, 2000);​

答案 1 :(得分:1)

$.get('get.php?randomize=1', function(data) {

   var json = data;
   for(i=0;i<n;i++)
   {
      setTimeout("$('#wallpaper').load('get_random.php?json_18=' + encodeURI(json.slice(i*18,(i*18)+18)), hideLoader());", i*20);
   }    

});

&安培;检查一下,也许是setTimeout语法的一些错误,没有检查它。

答案 2 :(得分:1)

来自jQuery documentation

$.each([52, 97], function(index, value) { 
  alert(index + ': ' + value); 
});

将显示:

0: 52
1: 97

因此,函数遍历每个元素,并将函数应用于每个元素,传递数组中的项索引和项本身。

您可以这样使用slice()函数:

var taken = 0, step = 18;
var subset18;
while (taken < json.length) {
    subset18 = json.slice(taken, taken + step);
    taken += step;
    // do something with subset18
}

http://www.w3schools.com/jsref/jsref_slice_array.asp