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...