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

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

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

function getRemote() {

    var remote;

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

    return remote;

}

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