2012-10-29 121 views
0

您好我試圖從成功的jquery獲取請求的get函數中獲取返回值。從Jquery的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搜索時第一次一個......結果不確定

+0

如果你希望這個調用是同步的,那麼AJAX是這個工作的錯誤工具! – Jamiec

回答

0

您也可以通過讓你的Ajax調用同步:

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

有你去冠軍...感謝SilkAdmin – Luckyy

+0

你可以,但它使得瀏覽器鎖定,而它的請求 - 有點否定ajax的目的首先。 – Jamiec

+0

這是真的..它可能發生...所以你建議下面的Fn你提供..因爲這樣,當我試圖我得到錯誤 – Luckyy

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); 
0

Ajax請求是異步的,這意味着您不能立即從呼叫中「返回」數據。這就是爲什麼所有形式的$.ajax採取一個或多個回調時,接收到的數據被調用,或發生錯誤等

這意味着你的方法必須是這樣的:

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

與回調看起來像:

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

tnx Jamiec,我更好地使用它作爲異步 – Luckyy