0

200個のIDを持つPHPファイルからJSON配列を返します。(ID番号)。これらのIDを18個だけにして、18個のIDだけを新しいPHPファイルに送信し、2秒後に、JSONの次の18個のIDも新しい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関数について読んだことがありますが、よくわかりません。私は誰かが私を助けてくれることを望んでいました。

4

3 に答える 3

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);​
于 2012-04-29T16:53:39.590 に答える
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の構文にエラーがあり、チェックしていませんでした。

于 2012-04-29T17:03:17.350 に答える
1

jQueryのドキュメントから:

$.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

于 2012-04-29T17:03:26.633 に答える