わかりました、そのタイトルはおそらく私の質問をうまく説明していません。うまくいけば、これは理にかなっています。これは jQuery を使用した初めてのアプリケーションでもあります。
私は次の機能を持っています:
function getRandomImages(limit) {
imagesArray = new Array();
$.getJSON('createImageArray.php', {limit: limit}, function(data) {
$.each(data, function(i) {
imagesArray[i] = data[i]; //imagesArray is declared globally.
});
});
}
getJSON は JSON オブジェクトを正しく取得しています。次のようなものが返されます。
{"image0":"images/19.10.FBB9.jpg","image1":"images/8.16.94070.jpg","image2":"images/8.14.47683.jpg","image3":"images/8.15.99404.jpg","image4":"images/8.13.20680.jpg","image5":"images/21.12.9A.jpg","image6":"images/8.17.75303.jpg"}
私はデバッグを行っていましたが、JSON オブジェクトから取得したイメージ パスが data[i] に正しく含まれていると確信しています。しかし、getRandomImages() が呼び出された後、グローバル imagesArray を確認すると、何も変更されていないことがわかります。実際のイメージを取得するのではなく、imagesArray のコピーを作成していると思います。
グローバル imagesArray が $.each ブロックで更新されるようにするには、何をする必要があるか教えてもらえますか? どういうわけか参照によって imagesArray を渡す必要がありますか? 申し訳ありませんが、私は少し迷っています。
助けてくれてありがとう。
編集:いくつかの背景情報。DB からランダムな画像の場所の配列を設定しています。画像が多すぎるため、データベースから配列にすべての画像を一度にロードしたくありません。そのため、画像配列のどこにいるかを追跡するカウンターがあります。画像の処理が完了したら、ポインターを次の画像に移動します。最後に到達したら、さらにランダムな画像を取得する必要があります。ここで、上記の js 関数が呼び出されます。これは、db から x 個のランダムな画像を取得して配列を返す createImageArray.php を呼び出します。次に、これらの画像の場所をグローバル imagesArray に格納します。
.getJSON の非同期性を考慮してコードを再構築する方法がわかりません。