ajax 的同步和异步
http://www.10086bank.com/2013327171624481.html
?
大家先看一段簡(jiǎn)單的jquery ajax 返回值的js
代碼?
function getReturnAjax{
? $.ajax({
??? type:"POST",
????http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx",
??? 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,那就是說(shuō)return true,return false根本沒(méi)有起作用,在火狐下用firebug調(diào)試也證明,代碼根本不會(huì)執(zhí)行到return 部分。
我們?cè)囅朐诤瘮?shù)里先定義一個(gè)變量,然后在ajax里賦值,最后在函數(shù)的末尾返回這個(gè)變量,會(huì)不會(huì)有效果呢?我們把代碼修改如下:
代碼?
function getAjaxReturn()???
{
?????? var bol=false;
? $.ajax({
??? type:"POST",
????http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx",
??? 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。一語(yǔ)道破天機(jī),怪不得以前很多ajax調(diào)用里面的賦值都不起作用)。這樣等ajax給bol賦值完畢后,才執(zhí)行下面的js部分。而剛剛異步的話,還沒(méi)有來(lái)得及賦值,就已經(jīng)return了。
?
代碼?
function getAjaxReturn()???
{
?????? var bol=false;
? $.ajax({
??? type:"POST",
??? async:false,
????http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx",
??? 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、 通過(guò)傳入一個(gè)函數(shù)解決這個(gè)問(wèn)題。
代碼?
function getAjaxReturn(success_function,fail_function)
{
?????? var bol=false;
? $.ajax({
??? type:"POST",
????http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx",
??? 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);
}
ClickCounts: 44??CommentS: 1??
feifei at 2013-3-27 17:16:24.481 do it
The Next:我的記事(48)
轉(zhuǎn)載于:https://www.cnblogs.com/chinhi/archive/2013/04/28/3049195.html
總結(jié)
以上是生活随笔為你收集整理的ajax 的同步和异步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 有关单点登录的几种方案
- 下一篇: zigbee cc2530 灌电流 拉电