如何在函数外部获取ajax的返回值?

Posted yurenc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在函数外部获取ajax的返回值?相关的知识,希望对你有一定的参考价值。

问题:今天在开发的过程中,遇到一个小问题,就是在将ajax获取数据部分的代码封装在函数内,将ajax获取的值作为函数的返回值。

抱着爱钻研的精神,最终得到了解决方案,在这里整理出来方便以后查阅。

尝试1:同步调用,直接在ajax函数中return值
 function getAjax(){
     var result = 1;
     $.ajax({
         url : ‘test.php‘,
         type : "post",
         data : {},
         async : false,
         success : function(data) {
             return 2;
         }
     });
    return result;
}
  --结果:失败,返回 1。
  --分析原因:ajax内部是一个或多个定义的函数,ajax中return返回值,返回到ajax定义函数,而不是返回到ajax外层的函数getAjax
***************************************************************************************************************
尝试2:异步调用,将ajax获取的值赋值给全局变量,将全局变量返回
 function getAjax(){
     var result = 1;
     $.ajax({
         url : ‘test.php‘,
         type : "post",
         data : {},
         async : true,
         success : function(data) {
             result = 2;
         }
     });
     return result;
 }
  --结果:失败,返回 1。
  --分析原因:ajax请求和后面的return result语句异步执行,导致return result比result = 2先执行并返回result的值
***************************************************************************************************************
正确打开方式:
同步调用,且ajax获取值后对全局变量赋值,最后将全局变量return
 function getAjax(){
     var result = 1;
     $.ajax({
         url : ‘test.php‘,
         type : "post",
         data : {},
         async : false,
         success : function(data) {
             result = 2;
         }
     });
     return result;
 }
--结果:返回 2。成功获取返回值
--成功原因:因为加了同步阻塞,先执行result = 2;再往下执行return result;
 








以上是关于如何在函数外部获取ajax的返回值?的主要内容,如果未能解决你的问题,请参考以下文章

js如何接收并显示返回值

js里的返回值怎么获取到

如何获取AsyncTask 异步处理的返回值

ajax返回值如何加密?

函数 ajax 返回值的问题

wpf messagebox 的返回值如何获取