Ajax同步请求

我经历了很多post。 有人说在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请求正在同步执行。

$.ajax支持许多不同类型的请求(jQuery调用传输 ),并将其隐藏在用户之外(普通的XHR,带有CORS的XHR,JSONP)。 这很好,因为这意味着您可以在$.ajax()处触发任何URL,而不必担心幕后发生的事情。

但是,并非所有类型的请求都支持$.ajax()支持的所有选项。 当发生这种情况时,事情开始失败,似乎是随机的。 这就是这里发生的事情。

由于您从另一个域请求资源, $.ajax()正在发出JSONP请求。 要了解JSONP的工作原理,请参阅有人用外行术语解释JSONP是什么吗? 。

基本上,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...