Javascript 延迟的ajax请求数组在.apply().done()时从未进入
我有以下代码来处理几个ajax请求,并等待它们全部处理并在SiteJavascript 延迟的ajax请求数组在.apply().done()时从未进入,javascript,jquery,ajax,jquery-deferred,Javascript,Jquery,Ajax,Jquery Deferred,我有以下代码来处理几个ajax请求,并等待它们全部处理并在Sitewhen.apply中组合它们的结果: var requestsArray = []; var url = "http://..."; console.log("url: " + url); var req1 = $.ajax({ type: "GET", url: url, dataType : "xml" }); req1.done(function (resp1) { $(resp1)
when.apply
中组合它们的结果:
var requestsArray = [];
var url = "http://...";
console.log("url: " + url);
var req1 = $.ajax({
type: "GET",
url: url,
dataType : "xml"
});
req1.done(function (resp1) {
$(resp1).find('interest').each(function() {
var interest_id = $(this).find('id').text();
var interest_name = $(this).find('name').text();
var request = $.ajax({
type:"GET",
URL: "http://en.wikipedia.org/w/api.php?action=parse&format=json&page="+ interest_name + "&redirects&prop=text",
dataType: "jsonp"
});
requestsArray.push(request);
});
$.when.apply(null, requestsArray).done(function () {
console.log(arguments);
// You can collect the responses in the same order from `arguments`
var responses = arguments;
});
});
为什么它从不在$.when.apply
中输入,并且它不打印任何控制台.log(参数)代码>
你把单词拼错了。它必须是url
,而不是url
如果没有给出url
,它将获取当前页面,该页面不是jsonp格式,这将导致parseerror,它不会调用done
回调,而是调用您没有传递的回调。在第一次查看时,不会在.done()
回调中出现参数
,例如,.done(函数(数据){})//数据:console.log(arguments)
的arguments
这不是问题,仍然没有输入。您需要自己进行调试。检查浏览器错误日志中的脚本错误。为ajax调用设置错误处理程序,并检查是否有返回的错误。设置几个断点(或插入console.log()
statements)并查看它在停止之前的距离。这是一个基本的调试,可以找出它在哪里停止或者为什么停止。关于从哪里开始,有什么建议吗?@João请参阅帖子。感谢wikimedia url出现错误,未捕获的语法错误:意外标记:
——尽管url上的数据在导航到该文档时似乎是有效的json;或'Access-Control-Allow-Origin'
问题。在控制台上试过了,JSFIDLE?变通办法;mediawiki url查询字符串中的问题?谢谢你的光!
$.ajax({
type:"GET",
URL: "http://en.wikipedia.org/w/api.php?action=parse&format=json&page=" +
// ^^^
interest_name + "&redirects&prop=text",
dataType: "jsonp"
});