0

嗨,我正在尝试从 jquery Get 请求的 get 函数中获取返回值。

我已经尝试了很多方法,但没有成功。我尝试过的两种形式是:

1)

GetResultOutput = function () {
    var outPut = "No Data Found";
    var test = test();
    return test["outPut"];
}

test = function()
{
    outPut = "No Data Found";
    **return** $.ajax({
        type: "GET",
        url: serviceUrl,
        dataType: "xml",
        success: function (xml) {
                    outPut = "done";
        }
    });
}

2)

GetResultOutput = function () {
    outPut = "No Data Found";
    $.ajax({
        type: "GET",
        url: serviceUrl,
        dataType: "xml",
        success: function (xml) {
            outPut = "done";
        }
    });
    return outPut;
}

但是他们两个都没有给我任何结果..

第二个输出我没有找到数据。和第一个在谷歌搜索时首选的...结果未定义

4

3 回答 3

1

而不是尝试获取输出然后像这样处理它:

var output = GetResultOutput();
process(output);

您可以将进程作为回调传递,例如:

var GetResultOutput = function (callback) {
    $.ajax({
        type: "GET",
        url: serviceUrl,
        dataType: "xml",
        success: function (xml) {
            callback(xml);
        }
    });
};

// usage:
GetResultOutput(process);
于 2012-10-29T10:23:10.527 回答
0

Ajax 请求是异步的,这意味着您不能立即从调用中“返回”数据。这就是为什么所有形式的$.ajax在接收到数据或发生错误等时都会调用一个或多个回调。

这意味着您的方法必须如下所示:

GetResultOutput = function (callback) {
   $.ajax({
        type: "GET",
        url: serviceUrl,
        dataType: "xml",
        success: callback
    });
}

回调看起来像:

function callback(xml)
{
   console.log('done: ' + xml);
}
于 2012-10-29T10:23:33.930 回答
0

您还可以使用以下方法使您的 ajax 调用同步:

   $.ajax({
        type: "GET",
        url: serviceUrl,
        async: false,
        dataType: "xml",
        success: function (xml) {
            outPut = "done";
        }
    });
于 2012-10-29T10:25:47.357 回答