jquery ajax 同步異步的執(zhí)行 return值不能取得的解決方案
代碼
function getReturnAjax{
$.ajax({
type:"POST", data:"username="+vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"<img src='images/ok.gif'/><b><font color='#ffff00'>該用戶名可以使用</font></b>",false)
return true; else showtipex(vusername.id,"<img src='images/cancel.gif'/><b><font color='#ffff00'>該用戶已被注冊(cè)</font></b>",false);
vusername.className="bigwrong";
return false;
} }
但是我們調(diào)用這個(gè)getReturnAjax()發(fā)現(xiàn)始終取得的都是false,那就是說return true,return false根本沒有起作用,在火狐下用firebug調(diào)試也證明,代碼根本不會(huì)執(zhí)行到return 部分。
我們?cè)囅朐诤瘮?shù)里先定義一個(gè)變量,然后在ajax里賦值,最后在函數(shù)的末尾返回這個(gè)變量,會(huì)不會(huì)有效果呢?我們把代碼修改如下:
代碼
function getAjaxReturn(){
var bol=false;
$.ajax({
type:"POST", data:"username="+vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"<img src='images/ok.gif'/><b><font color='#ffff00'>該用戶名可以使用</font></b>",false)
// return true;
bol=true; else showtipex(vusername.id,"<img src='images/cancel.gif'/><b><font color='#ffff00'>該用戶已被注冊(cè)</font></b>",false);
vusername.className="bigwrong";
//return false; }
return bol;
結(jié)果仍然不起作用。最后解決方案有2,如下
1、添加async:false.即修改為同步了,什么意思?(按同事解釋就是,這是等這個(gè)ajax有了返回值后才會(huì)執(zhí)行下面的js。一語道破天機(jī),怪不得以前很多ajax調(diào)用里面的賦值都不起作用)。這樣等ajax給bol賦值完畢后,才執(zhí)行下面的js部分。而剛剛異步的話,還沒有來得及賦值,就已經(jīng)return了。
代碼
function getAjaxReturn() {
var bol=false;
$.ajax({
type:"POST",
async:false, data:"username="+vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"<img src='images/ok.gif'/><b><font color='#ffff00'>該用戶名可以使用</font></b>",false)
// return true;
bol=true; else showtipex(vusername.id,"<img src='images/cancel.gif'/><b><font color='#ffff00'>該用戶已被注冊(cè)</font></b>",false);
vusername.className="bigwrong";
//return false; } return bol;
}
2、 通過傳入一個(gè)函數(shù)解決這個(gè)問題。
function getAjaxReturn(success_function,fail_function){
var bol=false;
$.ajax({
type:"POST", data:"username="+vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"<img src='images/ok.gif'/><b><font color='#ffff00'>該用戶名可以使用</font></b>",false)
success_function(msg);
}
else showtipex(vusername.id,"<img src='images/cancel.gif'/><b><font color='#ffff00'>該用戶已被注冊(cè)</font></b>",false);
vusername.className="bigwrong";
fail_function(msg);
//return false; }
});
function success_function(info) //do what you want do
alert(info); funciont fail_function(info) //do what you want do
alert(info);
}
相關(guān)文章
jQuery使用zTree插件實(shí)現(xiàn)可拖拽的樹示例
本篇文章主要介紹了js使用zTree插件實(shí)現(xiàn)可拖拽的樹示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
jQuery實(shí)現(xiàn)的自定義輪播圖功能詳解
這篇文章主要介紹了jQuery實(shí)現(xiàn)的自定義輪播圖功能,結(jié)合實(shí)例形式詳細(xì)分析了輪播圖的原理、實(shí)現(xiàn)步驟及相關(guān)操作技巧,需要的朋友可以參考下2018-12-12
jQuery實(shí)現(xiàn)圖片左右滾動(dòng)特效
這篇文章主要介紹了jQuery合作伙伴左右滾動(dòng)特效,功能實(shí)現(xiàn)非常簡(jiǎn)單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-08-08
jquery使用canvas標(biāo)簽繪制驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了Jquery中用canvas標(biāo)簽繪制驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Jquery實(shí)現(xiàn)動(dòng)態(tài)切換圖片的方法
這篇文章主要介紹了Jquery實(shí)現(xiàn)動(dòng)態(tài)切換圖片的方法,涉及jQuery頁面元素操作及鏈?zhǔn)讲僮鞯南嚓P(guān)技巧,需要的朋友可以參考下2015-05-05
jquery實(shí)現(xiàn)表單驗(yàn)證并阻止非法提交
本文給大家分享的是使用jquery實(shí)現(xiàn)表單驗(yàn)證并阻止非法提交的代碼,思路非常不錯(cuò),這里推薦給小伙伴們參考下。2015-07-07
jQuery jqgrid 對(duì)含特殊字符json 數(shù)據(jù)的 Java 處理方法
在網(wǎng)頁上使用 json 數(shù)據(jù),如果數(shù)據(jù)中含有特殊字符,會(huì)比較麻煩。2011-01-01
基于jQuery實(shí)現(xiàn)文本框只能輸入數(shù)字(小數(shù)、整數(shù))
在實(shí)際應(yīng)用中,文本框中有時(shí)候只能夠允許輸入整數(shù),但是有時(shí)候可能更為"博愛"一點(diǎn),可以允許輸入浮點(diǎn)數(shù),下面就通過實(shí)例代碼介紹一下如何利用jquery實(shí)現(xiàn)此功能2016-01-01
jQuery實(shí)現(xiàn)點(diǎn)擊彈出背景變暗遮罩效果實(shí)例代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)點(diǎn)擊彈出背景變暗遮罩效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06

