Ajax執(zhí)行順序流程及回調(diào)問題分析
更新時(shí)間:2012年12月10日 09:19:16 作者:
有些朋友在實(shí)現(xiàn)異步局部更新數(shù)據(jù),會(huì)遇到ajax的執(zhí)行問題,本文將對(duì)此進(jìn)行詳細(xì)介紹,需要了解的朋友可以參考下
一個(gè)全局的變量var JsonData;
我這里有一個(gè)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(“獲取信息列表錯(cuò)誤”);
window.close();
}
});
return JsonData;
}
然后我有一個(gè)類。
JScript code:
function DrawDropDownList(sFieldRuleMethod)
{
GetJson(sFieldSourceName);
var b = JsonData;
}
如此,我在執(zhí)行DrawDropDownList的時(shí)候,為什么總是獲取不到JsonData呢?
我打斷點(diǎn)跟蹤了下, 發(fā)現(xiàn)是等DrawDropDownList方法里面的所有都執(zhí)行完以后才會(huì)進(jìn)入GetJson方法,
請(qǐng)問有什么辦法把GetJson里面獲得的Result數(shù)據(jù)拿出來?
不要在
success: function (Result) {
//Do Something
},
我就是想把獲得的數(shù)據(jù)拿出來用, 因?yàn)镚etJson是一個(gè)通用的方法,不想在里面執(zhí)行單個(gè)的邏輯.
不能在回調(diào)中return,并且需要同步,就可以了!
另外一種放過是不建議同步的,需要給我的函數(shù)增加一個(gè)函數(shù)參數(shù)作為回調(diào)函數(shù),將ajax的結(jié)果傳遞到該函數(shù),如下代碼細(xì)節(jié):
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(“獲取信息列表錯(cuò)誤”);
window.close();
}
});
//return JsonData;
}
我這里有一個(gè)Ajax處理的方法:
JScript code:
復(fù)制代碼 代碼如下:
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(“獲取信息列表錯(cuò)誤”);
window.close();
}
});
return JsonData;
}
然后我有一個(gè)類。
JScript code:
復(fù)制代碼 代碼如下:
function DrawDropDownList(sFieldRuleMethod)
{
GetJson(sFieldSourceName);
var b = JsonData;
}
如此,我在執(zhí)行DrawDropDownList的時(shí)候,為什么總是獲取不到JsonData呢?
我打斷點(diǎn)跟蹤了下, 發(fā)現(xiàn)是等DrawDropDownList方法里面的所有都執(zhí)行完以后才會(huì)進(jìn)入GetJson方法,
請(qǐng)問有什么辦法把GetJson里面獲得的Result數(shù)據(jù)拿出來?
不要在
復(fù)制代碼 代碼如下:
success: function (Result) {
//Do Something
},
我就是想把獲得的數(shù)據(jù)拿出來用, 因?yàn)镚etJson是一個(gè)通用的方法,不想在里面執(zhí)行單個(gè)的邏輯.
不能在回調(diào)中return,并且需要同步,就可以了!
另外一種放過是不建議同步的,需要給我的函數(shù)增加一個(gè)函數(shù)參數(shù)作為回調(diào)函數(shù),將ajax的結(jié)果傳遞到該函數(shù),如下代碼細(xì)節(jié):
復(fù)制代碼 代碼如下:
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(“獲取信息列表錯(cuò)誤”);
window.close();
}
});
//return JsonData;
}
相關(guān)文章
JS中attr和prop屬性的區(qū)別以及優(yōu)先選擇示例介紹
這篇文章主要介紹了JS中attr和prop屬性的區(qū)別以及優(yōu)先選擇,需要的朋友可以參考下2014-06-06Javascript 按位與運(yùn)算符 (&)使用介紹
Javascript 按位與運(yùn)算符 (&),用于對(duì)兩個(gè) 32 位表達(dá)式執(zhí)行按位“與”運(yùn)算,而一般表達(dá)式里面都是十進(jìn)制整數(shù),此時(shí)需要先轉(zhuǎn)換成對(duì)應(yīng)的二進(jìn)制,然后向前加0,補(bǔ)足32位2014-02-02JavaScript獲取tr td 的三種方式全面總結(jié)(推薦)
這篇文章主要介紹了JavaScript獲取tr td 的三種方式,具體操作步驟大家可查看下文詳細(xì)講解,感興趣的小伙伴們可以參考一下。2017-08-08javascript中對(duì)Date類型的常用操作小結(jié)
下面小編就為大家?guī)硪黄猨avascript中對(duì)Date類型的常用操作小結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05常用的Javascript數(shù)據(jù)驗(yàn)證插件
本文主要介紹的是常用的Javascript數(shù)據(jù)驗(yàn)證插件,包括電話號(hào)碼驗(yàn)證,郵件驗(yàn)證,身份證驗(yàn)證,需要的朋友可以參考下2015-08-08