-1

データを取得するjsonpリクエストを作成しました。唯一の問題は、ループの外側の配列でデータを取得できないように見えることです:(

var lookbook_data = new Array();
$.ajax({
  url: "http://lookbook.king-quinna.nl/api/get_recent_posts/?callback=1&custom_fields=image1",
dataType: "jsonp",
success: function(data) {
for(var i = 0; i<4; i++) {
    lookbook_data[i] = data.posts[i].custom_fields.image1[0];      
}
}
});
console.log(lookbook_data); 

したがって、console.logを実行すると、ルック内に配列され、本来の方法でデータが出力されます。ただし、関数の外ではそうではありません。しかし、私は外部の変数をクリアしなかったので、私は本当に理由がわかりません:(

ところで、厄介なコードボックは4つのスペースで正しく理解できないようです:(

4

4 に答える 4

2
var lookbook_data = new Array(),
    XHR = $.ajax({
            url: "http://lookbook.king-quinna.nl/api/get_recent_posts/?callback=1&custom_fields=image1",
            dataType: "jsonp"
          });
//anywhere else in your script you can call :
XHR.done(function() {
    for(var i = 0; i<4; i++) {
        lookbook_data[i] = data.posts[i].custom_fields.image1[0];      
    }
    console.log(lookbook_data); 
});
于 2012-08-04T11:25:20.697 に答える
2

その ajax 呼び出しは非同期であるため、終了する前にコードの最後の行にすぐに到達します。

と同期させることができます(お勧めしません)

async = 'false'

ajax呼び出し内

またはこのようなことをします

$.ajax({
    url: "http://lookbook.king-quinna.nl/api/get_recent_posts/?callback=1&custom_fields=image1",
    dataType: "jsonp",
    success: function(data) {
        for(var i = 0; i<4; i++) {
            lookbook_data[i] = data.posts[i].custom_fields.image1[0];      
        }
        continueHere()
     }
 });

 function continueHere() {
      // rest of the code that handles your ajax call
 }
于 2012-08-04T11:13:52.107 に答える
1

console.log(lookbook_data[i]);成功関数内のfor ループ内でこれを使用します

于 2012-08-04T11:32:50.290 に答える
0

console.log(lookbook_data);成功関数内で使用

于 2012-08-04T11:27:03.720 に答える