-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

该 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 回答
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 回答
1

use this inside your for loop console.log(lookbook_data[i]); inside the success function

于 2012-08-04T11:32:50.290 回答
0

console.log(lookbook_data);在成功函数内部使用

于 2012-08-04T11:27:03.720 回答