淺析jquery ajax異步調(diào)用方法中不能給全局變量賦值的原因及解決方法
在調(diào)用一個jquery的ajax方法時我們有時會需要該方法返回一個值或者給某個全局變量賦值,可是我們發(fā)現(xiàn)程序執(zhí)行完后并沒有獲取到我們想要的值,這時很有可能是因?yàn)槟阌玫氖莂jax的異步調(diào)用async:true(默認(rèn)情況),如:
function ManageCommentText(text) {
var result = text;
$.ajax({
data: "get",
url: "GetComments.aspx",
data: "type=getText&commentText=" + text,
cache: false,
async: false,
success: function (data) {
result = data;
}
})
return result;
以上方法是ajax的同步調(diào)用,只有在獲取到了data值并賦值給result以后才會返回result完成該方法的調(diào)用。若設(shè)為async:true,
則會未等到獲取data值就已經(jīng)返回了result。
另一個解決辦法就是將你的代碼直接寫到success方法里。(根據(jù)你的業(yè)務(wù)并不是所有的都可以直接寫到success里的)。
注意:如果設(shè)定為 async: false,就失去 ajax異步的優(yōu)點(diǎn)了哦。
相關(guān)文章
jQuery EasyUI 布局之動態(tài)添加tabs標(biāo)簽頁
本文給大家介紹jquery easyui布局之動態(tài)添加tabs標(biāo)簽頁,實(shí)現(xiàn)思路是這樣的通過調(diào)用add方法就可以輕松實(shí)現(xiàn),本文分步驟給大家詳細(xì)介紹,需要的朋友一起學(xué)習(xí)吧2015-11-11jQuery源碼分析之jQuery.fn.each與jQuery.each用法
這篇文章主要介紹了jQuery源碼分析之jQuery.fn.each與jQuery.each用法,較為詳細(xì)的分析了each的用法,非常具有實(shí)用價值,需要的朋友可以參考下2015-01-01jQuery響應(yīng)enter鍵的實(shí)現(xiàn)思路
當(dāng)用戶在表單里數(shù)據(jù)完數(shù)據(jù)后,之間按enter鍵就可以執(zhí)行查詢或者保存的操作。實(shí)現(xiàn)的思路如下2014-04-04AspNet中使用JQuery上傳插件Uploadify詳解
Uploadify是JQuery的一個上傳插件,實(shí)現(xiàn)的效果非常不錯,帶進(jìn)度顯示。不過官方提供的實(shí)例時php版本的,本文將詳細(xì)介紹Uploadify在Aspnet中的使用2015-05-05jQuery中removeClass()方法用法實(shí)例
這篇文章主要介紹了jQuery中removeClass()方法用法,實(shí)例分析了removeClass()方法的功能、定義及從匹配元素刪除一個或多個類的使用技巧,需要的朋友可以參考下2015-01-01基于JQuery和DWR實(shí)現(xiàn)異步數(shù)據(jù)傳遞
這篇文章主要介紹了基于JQuery和DWR實(shí)現(xiàn)異步數(shù)據(jù)傳遞,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10