0

こんにちは、成功時にjquery Getリクエストからget関数から戻り値を取得しようとしています。

私はすでに多くの方法を試しましたが、成功していません。私が試した2つの形式は次のとおりです。

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;
}

しかし、どちらも私に結果を与えていません..

2つ目は、データが見つからないとして私を出力します。そして、グーグルで検索したときに優先される最初のもの...未定義の結果

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 リクエストは非同期です。つまり、呼び出しからすぐにデータを「返す」ことはできません。そのため、データを受信したときやエラーが発生したときに、すべての形式で$.ajax1 ​​つ以上のコールバックが呼び出されます。

つまり、メソッドは次のようになります。

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 に答える