jquery ajax return值不能取得的解決方案

jQuery ajax - ajax() 方法

http://www.w3school.com.cn/jquery/ajax_ajax.asphtml

http://www.cnblogs.com/fqw1987815/archive/2010/09/03/1816976.htmljquery

http://www.jb51.net/article/38768.htmajax

 

http://www.debugease.com/aspdotnet/962356.htmljson

http://www.2cto.com/kf/201310/249208.htmlapp

Jquery ajax 獲得返回值

1.ajax默認是異步調用的,因此獲得的返回值是空值,要獲得值必須改爲同步:async: false,//同步。
2.必須定義一個全局變量 var result = ""來保存返回值。不然獲得的是undefined
function GetReturnValue(url, jsonText) {  
           var result = "";  
           $.ajax({  
               type: "POST",  
               url: url,  
               data: jsonText,  
               contentType: "application/json;charset=utf-8",  
               dataType: "json",  
               async: false,//同步  
               success: function (json) {  
                   result = eval('(' + json.d + ')');  
               }, failure: function () {  
                   result = "";  
               }  
           })  
           return result;  
}

 

jquery ajax return值不能取得的解決方案

你們先看一段簡單的jquery ajax 返回值的js
代碼
function getReturnAjax{
  $.ajax({
    type:"POST",
    url:"ajax/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'>該用戶已被註冊</font></b>",false);
      vusername.className="bigwrong";
      return false;
    }
    }
  });
  }
 可是咱們調用這個getReturnAjax()發現始終取得的都是false,那就是說return true,return false根本沒有起做用,在火狐下用firebug調試也證實,代碼根本不會執行到return 部分。
咱們試想在函數裏先定義一個變量,而後在ajax裏賦值,最後在函數的末尾返回這個變量,會不會有效果呢?咱們把代碼修改以下:
代碼
function getAjaxReturn()   
{
       var bol=false;
  $.ajax({
    type:"POST",
    url:"ajax/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'>該用戶已被註冊</font></b>",false);
      vusername.className="bigwrong";
      //return false;
    }
    }
  });
  return bol;
  }
結果仍然不起做用。最後解決方案有2,以下
一、添加async:false.即修改成同步了,什麼意思?(按同事解釋就是,這是等這個ajax有了返回值後纔會執行下面的js。一語道破天機,怪不得之前不少ajax調用裏面的賦值都不起做用)。這樣等ajax給bol賦值完畢後,才執行下面的js部分。而剛剛異步的話,尚未來得及賦值,就已經return了。
 
代碼
function getAjaxReturn()   
{
       var bol=false;
  $.ajax({
    type:"POST",
    async:false,
    url:"ajax/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'>該用戶已被註冊</font></b>",false);
      vusername.className="bigwrong";
      //return false;
    }
    }
  });
  return bol;
  }

2、 經過傳入一個函數解決這個問題。
代碼
function getAjaxReturn(success_function,fail_function)
{
       var bol=false;
  $.ajax({
    type:"POST",
    url:"ajax/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'>該用戶已被註冊</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);
}

按需選擇本身須要的方案吧。通常大網站都採用第2種傳入函數的方式,來處理成功和失敗狀況下的頁面提示。

ajax js 保存值問題?異步

經過ajax 查詢數據:如何保存上次查詢的值,而後和本次查詢到的值進行累加顯示出來?先謝謝了
 

解決方案 »

  1.  

    Cookie,或者隱藏控件,
    隱藏控件應該簡單一點
      

     

  2.  

    定義 js變量.
    var yourvalue = 0;
    //ajax取得值 
    yourvalue  = yourvalue + ajaxvalue;
      

     

  3.  

    AJAX腳本運行,那麼能夠定義一個客戶端腳本變量保存,這個最簡單易行.
      

另外,jquery中各個事件執行順序以下:

1.ajaxStart(全局事件)async

2.beforeSend函數

3.ajaxSend(全局事件)post

4.success網站

5.ajaxSuccess(全局事件)

6.error

7.ajaxError (全局事件)

8.complete

9.ajaxComplete(全局事件)

10.ajaxStop(全局事件)

相關文章
相關標籤/搜索