构造Javascript回调:Javascript/JQuery

构造Javascript回调:Javascript/JQuery,javascript,jquery,Javascript,Jquery,我给youtube打了一系列电话,比如: function getVideos() { for(var i=0; i<queryArray.length; i++){ var queryUrl = "http://gdata.youtube.com/feeds/api/videos?q="+queryArray[i]+ "&max-results=1&orderby=relevance&alt=json-in-s

我给youtube打了一系列电话,比如:

function getVideos() {

    for(var i=0; i<queryArray.length; i++){
        var queryUrl = "http://gdata.youtube.com/feeds/api/videos?q="+queryArray[i]+
              "&max-results=1&orderby=relevance&alt=json-in-script&format=5";

     $.get(queryUrl, function(){ 
    constructHtml(data, i);
    });

    }

}

但是firebug告诉我HTML中的“数据”没有定义。我猜我在jquery中使用回调的方式是错误的。谢谢你的帮助

回调函数中缺少
数据
参数

$.get(queryUrl, function(data){ 
    constructHtml(data, i);
});
$.get(queryUrl, function(data){ 
    constructHtml(data, i);
});
改变

$.get(queryUrl, function(){ 

您将从中看到,success函数可以包括其他有用的参数success(data、textStatus、jqXHR),一个在请求成功时执行的回调函数。

您遗漏了一点:

$.get(queryUrl, function(data){ 
  constructHtml(data, i);
});

您需要指定来自AJAX加载的匿名回调采用数据变量。然后将其传递给您的函数/

您需要在回调函数中传递数据

$.get(queryUrl, function(data){ 
    constructHtml(data, i);
});
$.get(queryUrl, function(data){ 
    constructHtml(data, i);
});

匿名函数中缺少
数据
参数:

$.get(queryUrl, function(data){ 
    constructHtml(data, i);
});
但是,
i
始终是
queryArray.length
因为函数将在for循环运行后执行

您可以使用jQuery的
each
在本地范围内获取
i

$.each(queryArray, function(i, value) {
    var queryUrl = "http://gdata.youtube.com/feeds/api/videos?q=" + value + "&max-results=1&orderby=relevance&alt=json-in-script&format=5";

    $.get(queryUrl, function(data){ 
        constructHtml(data, i);
    });

});