从Jquery的Get函数返回值

时间:2012-10-29 10:13:26

标签: javascript jquery

您好我正在尝试从jquery Get 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;
}

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

第二个输出我没有找到数据。第一个是google搜索时首选的...结果为未定义

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

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

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

回调看起来像:

function callback(xml)
{
   console.log('done: ' + xml);
}

答案 2 :(得分:0)

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

   $.ajax({
        type: "GET",
        url: serviceUrl,
        async: false,
        dataType: "xml",
        success: function (xml) {
            outPut = "done";
        }
    });