如何在函数外部获取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;
 


原文地址:https://www.cnblogs.com/yurenc/p/8486035.html

时间: 2024-10-29 19:05:35

如何在函数外部获取ajax的返回值?的相关文章

ajax接收返回值获取不到问题

function testAsync() { //定义一个全局变量来接受$post的返回值 var result; //用ajax的“同步方式”调用一般处理程序 $.ajax({ url: "handler/QueryCourseByFirst.ashx", async: false,//改为同步方式 type: "POST", data: { Sqls: sql4 }, success: function (courseDT4) { result = course

jquery中ajax如何返回值到上层函数的方法以及对于js处理json对象方法的记录

①在我们做前端js处理的时候我们经常会将一些公用的js方法封装起来,方便别的地方调用,但是我们要做的是需要将请求返回的值传递给调用者,这里我记录了在js中采用ajax方法获取后台数据并返回给调用者的方法,我们平时使用ajax的方法基本为如: <span style="font-family:FangSong_GB2312;font-size:18px;">function AutoGetOpenid(){ var personJson; $.ajax({ url : &qu

利用SQLServer查询分析器获取存储过程的返回值,检查测试存储过程

1.存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况(1)如果通过查询分析器执行该存储过程,在显示栏中如果有影响的行数,则影响几行count就是几(2)如果通过查询分析器执行该存储过程,在显示栏中如果显示'命令已成功完成.'则count = -1;在显示栏中如果有查询结果,则count = -1总结:A.ExecuteNonQuery()该方法只返回影响的行数,如果没有影响

Jquery ajax 得到返回值

1.ajax默认是异步调用的,所以得到的返回值是空值,要得到值必须改成同步:async: false,//同步. 2.必须定义一个全局变量 var result = ""来保存返回值.否则得到的是undefined functionGetReturnValue(url, jsonText) { varresult =""; $.ajax({ type:"POST", url: url, data: jsonText, contentType:&q

python asyncio 获取协程返回值和使用callback

Reference from: https://www.cnblogs.com/callyblog/p/11216961.html 1. 获取协程返回值,实质就是future中的task import asyncioimport timeasync def get_html(url): print("start get url") await asyncio.sleep(2) return "bobby" def callback(url, future): pri

无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)

1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCreate()开始,直到调用onDestory()为止.Activity在onCreate()中设置所有“全局”状态以完成初始化. 而在onDestory()中释放所有系统资源.例如,如果Activity有一个线程在后台运行从网络下载数据,它会在onCreate()创建线程, 而在onDestory()销

jquery中的get和post、ajax有关返回值的问题描述

一:前言 今天我就要离开公司回学校准备考试,在走之前,我自己做的一个模块测试除了一些小的bug.问题如下 我在往数据库中插入数据,首先要选择一级菜单,接着会更具一级菜单生成一级菜单的子目录,在选择日期.填完数据后进行保存操作.在点击保存时需要对新增的数据进行验证,就是根据一级目录的编号和日期来进行查询,如果有的话就要弹出一个提示框,告诉其其中已经有了改目录该日期的数据.在这里我就需要进行验证.但是我在用jquery.get方法来写时怎么都没有用.而此时我又快下班走人了,弄得我很烦躁,最后还是一个

javascript函数的声明,及返回值

<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <!--js中声明函数的方法--> <script type="text/javascript"> //因为javascript是弱类型的语言,所以参数不需要加类型.函数的也不需要像c#那样要求所以路径都需要有返回值(这个不像c#语言,而且c#

C#中的函数(二) 有参有返回值的函数

接上一篇 C#中的函数(-) 无参无返回值的函数 http://www.cnblogs.com/fzxiaoyi/p/8502613.html 这次研究下C#中的函数(二) 有参有返回值的函数 依然写一个小例子,用来测试 跟上一个例子差不多,区别就是MyFunction有二个参数a,b,返回二个数相加的值 F5调试运行,中断后转到反汇编 这里很明显看到不同了 这里就得讲到参数传递的方式,参数从左向右依次存入寄存器ecx edx 但是不同的编程语言有不同的传递参数的方式,有空再写一篇文章介绍下 要