$.ajax() 獲取不到return 返回值


 

 
/*常見錯誤示例  直接在 ajax 里面return 結果
*/

 function demo(){
     $.ajax({
         url : 'test.do',
         type : "post",
         data : {},
         async : false,
         success : function(data) {
             return 2;
         }
     });
 }

/* 結果  無返回 */

兩個錯誤寫法會導致這種情況:

1.ajax默認為異步,異步不可以直接return返回結果

2.在ajax方法中直接return返回值,嵌套函數中,return該作用域函數的返回值,demo中,demo()為外部函數,return的結果對demo()無效

修改為:

41 /**
42  * (1)同步調用 (2)且在ajax對全局變量進行設值 (3)ajax函數外將變量return
43  * 結果:返回 2。成功獲取返回值
44  * 成功原因:先執行result = 2;再往下執行return result;
45  */
46 function demo1(){
47     var result = 1;
48     $.ajax({
49         url : 'test.do',
50         type : "post",
51         data : {},
52         async : false,
53         success : function(data) {
54             result = 2;
55         }
56     });
57     return result;  //2
58 }

可以正常運行了。但是,ajax 改為同步請求會導致阻塞;ajax 需要 進行異步請求 

 /**
  * 添加async:true.即修改為異步
 * 結果以callback的形式回調
  */
 function demo1(params,callback){
    var result = 1;
     $.ajax({
        url : 'test.do',
         type : "post",
         data : {"params ":params },
         async : true,
         success : function(data) {
             result = 2;
             callback(result);
         }
     });
 }    

demo1("Value",function(rs){
   //do someting
})

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM