jQuery:执行同步AJAX请求

我过去使用过一些jQuery,但我完全被这个问题困住了。我知道使用同步ajax调用的优点和缺点,但是在这里它是必需的。

加载了远程页面(用firebug控制),但没有显示返回值。

我应该做些什么不同的事情来让我的函数正确返回?

function getRemote() {


var remote;


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


return remote;


}
364488 次浏览

这个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
}).responseText;
}

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

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

铬:

主线程上的同步XMLHttpRequest已弃用,因为它会对最终用户的体验产生不利影响。有关更多帮助,请查看https://xhr.spec.whatwg.org/

Firefox:

主线程上的同步XMLHttpRequest已弃用,因为它会对最终用户的体验产生不利影响。为了获得更多帮助http://xhr.spec.whatwg.org/

您没有正确地使用ajax函数。因为它是同步的,它会像这样内联返回数据:

var remote = $.ajax({
type: "GET",
url: remote_url,
async: false
}).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;
}
});
}