一個全域的變數var JsonData;
我這裡有一個Ajax處理的方法:
JScript code:
複製代碼 代碼如下:function GetJson(DataSourceName) {
$.ajax({
type: “post”,
url: “Ajax/AjaxData.ashx?MethodName=” + DataSourceName,
contentType: “application/json;”,
data: “”,
dataType: “json”,
success: function (Result) {
JsonData = Result;
},
error: function (result) {
alert(“擷取資訊列表錯誤”);
window.close();
}
});
return JsonData;
}
然後我有一個類。
JScript code: 複製代碼 代碼如下:function DrawDropDownList(sFieldRuleMethod)
{
GetJson(sFieldSourceName);
var b = JsonData;
}
如此,我在執行DrawDropDownList的時候,為什麼總是擷取不到JsonData呢?
我打斷點跟蹤了下, 發現是等DrawDropDownList方法裡面的所有都執行完以後才會進入GetJson方法,
請問有什麼辦法把GetJson裡面獲得的Result資料拿出來?
不要在 複製代碼 代碼如下:success: function (Result) {
//Do Something
},
我就是想把獲得的資料拿出來用, 因為GetJson是一個通用的方法,不想在裡面執行單個的邏輯.
不能在回調中return,並且需要同步,就可以了!
另外一种放過是不建議同步的,需要給我的函數增加一個函數參數作為回呼函數,將ajax的結果傳遞到該函數,如下代碼細節: 複製代碼 代碼如下:function GetJson(DataSourceName,callback) {
$.ajax({
type: “post”,
url: “Ajax/AjaxData.ashx?MethodName=” + DataSourceName,
contentType: “application/json;”,
data: “”,
dataType: “json”,
success: function (Result) {
JsonData = Result;
callback(JsonData)
},
error: function (result) {
alert(“擷取資訊列表錯誤”);
window.close();
}
});
//return JsonData;
}