jQuery:执行同步AJAX请求

我过去做过一些jQuery,但是我完全停留在这个上面。 我知道使用同步ajax调用的优点和缺点,但在这里它将是必需的。

远程页面被加载(用萤火虫控制),但没有显示返回。

我应该做什么不同,使我的function正常返回?

function getRemote() { var remote; $.ajax({ type: "GET", url: remote_url, async: false, success : function(data) { remote = data; } }); return remote; } 

当你正在做一个同步请求,应该是

 function getRemote() { return $.ajax({ type: "GET", url: remote_url, async: false }).responseText; } 

示例 – http://api.jquery.com/jQuery.ajax/#example-3

请注意:将asynchronous属性设置为false将被弃用 ,并被移除( 链接 )。 包括Firefox和Chrome在内的许多浏览器已经开始在控制台中打印警告,如果你使用这个:

铬:

主线程上的同步XMLHttpRequest由于对最终用户的体验有不利的影响而被弃用。 如需更多帮助,请查看https://xhr.spec.whatwg.org/

火狐:

主线程上的同步XMLHttpRequest由于对最终用户的体验有不利的影响而被弃用。 更多帮助http://xhr.spec.whatwg.org/

我真的很讨厌“我不使用它或不同意它,所以你不应该使用它”汤姆在上面的态度。 几乎和认为有害的散文一样糟糕。 这让我想起了当双方都符合标准时,基于IDE偏好的单引号和双引号的争论。

我有一个ajax问题,只能通过添加async: false,来解决。 以浏览器挂断为借口争论这个function的弃用(和删除)是愚蠢的。 你怎么知道某人的同步ajax请求需要多长时间? 不是每个人都通过这些调用加载或传输大量数据。

我的问题是一个跟踪系统,大多数浏览器没有报告用户离开页面的时间( onbeforeunload ),但是一旦ajax请求被设置为同步,除了iOS上的Safari以及其他极其过时的Web结束浏览器。 我发送的数据量极其微不足道,只有两个整数,并且是对本地服务器的请求。 我的请求挂断根本不值得注意 ,你需要监视工具来注意。 我的同步ajax调用的替代方法是通过setInterval函数连续调用ajax,这会大大增加服务器负载和带宽。 你不能说每当有人离开页面时,每N秒一个Ajax调用比一个更好。 你不能。

同步请求的弃用是对所有Web开发人员的惩罚,因为其中一些人不负责任地使用它。

你正在使用ajax函数。 由于它是同步的,它会像这样内联地返回数据:

 var remote = $.ajax({ type: "GET", url: remote_url, async: false }).responseText; 

那个url有多远? 它来自同一个域吗? 代码看起来不错

尝试这个

 $.ajaxSetup({async:false}); $.get(remote_url, function(data) { remote = data; }); // or remote = $.get(remote_url).responseText; 
 function getRemote() { return $.ajax({ type: "GET", url: remote_url, async: false, success: function (result) { /* if result is a JSon object */ if (result.valid) return true; else return false; } }); } 

检查这些

 function getRemote() { //var remote; return $.ajax({ type: "GET", url: remote_url, async: false, success : function(data) { remote = data; } }); //return remote; }