我经历了很多帖子。有人说在jquery 1.8之后,它被弃用了。对某些人来说,它仍然有效。我该如何实现这个
$.ajaxSetup({async:false});
duration_reco = $.ajax({
url : newurl,
async : false,
dataType : 'json',
});
console.log(duration_reco.responseText);
它说durtaion_reco未定义。我已经看到duration_reco cotaines有效数据了。 ajax请求正在同步执行。
答案 0 :(得分:1)
$.ajax
支持许多不同类型的请求(jQuery调用 transports ),并将其隐藏在用户之外(普通XHR,带有CORS的XHR,JSONP) )。这很好,因为这意味着您可以在$.ajax()
处触发任何网址,而不必担心幕后发生的事情。
但是,并非所有类型的请求都支持$.ajax()
支持的所有选项。当发生这种情况时,事情开始失败,似乎是随机的。这就是这里发生的事情。
由于您要从其他域请求资源,$.ajax()
正在发出JSONP请求。要了解JSONP的工作原理,请参阅Can anyone explain what JSONP is, in layman terms?。
基本上,JSONP请求不能同步发生。您只能 异步执行它们,这涉及到将代码更改为;
duration_reco = $.ajax({
url : newurl,
dataType : 'json'
}).done(function (obj) {
console.log(obj);
});
无论如何,同步AJAX请求错误。他们锁定了浏览器。几乎没有理由使用它们。 不惜一切代价避免使用。 我不能强调这一点。
您还应确保newurl
变量以http://
或https://
开头;否则,它将被视为当前域中的路径,并且将要求http://www.yourdomain.com/gdata.youtube.com/feeds/api...
。