$.ajax() 获取不到return 返回值
/*常见错误示例 直接在 ajax 里面return 结果
*/
 function demo(){
  $.ajax({
       url : 'test.do',
      type : "post",
      data : {},
     async : false,
      success : function(data) {
           result = data.object;
    }
  });
 }
/* 结果 无返回 */
两个错误写法会导致这种情况:
1、 ajax默认为异步,异步不可以直接return返回结果;
2、在ajax方法中直接return返回值,嵌套函数中,return该作用域函数的返回值,demo中,demo()为外部函数,return的结果对demo()无效
修改为:
/**
 * (1)同步调用 (2)且在ajax对全局变量进行设值 (3)ajax函数外将变量return
 * 结果:返回 2。成功获取返回值
 * 成功原因:先执行result = 2;再往下执行return result;
 */
function demo1(){
  var result = 1;
      $.ajax({
       url : 'test.do',
       type : "post",
      data : {},
      async : false,
      success : function(data) {
           result = data.object;
      }
   });
    return result;  //data.object的值
}
可以正常运行了。但是,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 = data.object;
                   callback(result);
             }
       });
 }    
demo1("Value",function(rs){
   //do someting
console.log(rs);
})
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号