今天刚上班就偶遇关于获取Ajax方法return的返回值的问题,这里小记一下。

在使用jquery中,如果获取不到ajax返回值,原因有二:

一、ajax未使用同步

  ajax未使用同步,导致数据未加载完,再return的话,最后只会获得一个"undefined"的结果。

二、在ajax方法中直接return返回值

下面列举三种写法,,如果想要成功获取到返回值,可以参考第三种写法:

 /**
* 方式:(1)同步调用 (2)在ajax函数中return值
* 结果:返回 1。未成功获取返回值
* 失败原因:ajax内部是一个或多个定义的函数,ajax中return返回值,
* 返回到ajax定义函数,而不是返回到ajax外层的函数checkAccount1()
*/
function checkAccount1(){
var result = 1;
$.ajax({
url : 'test.do',
type : "post",
data : {},
async : true,
success : function(data) {
return 2;
}
});
return result;
} /**
* (1)异步调用 (2)在ajax对全局变量进行设值 (3)ajax函数外将变量return
* 结果:返回 1。未成功获取返回值
* 失败原因:ajax请求和后面的return result语句异步执行,
* 导致return result比result = 2先执行并返回result的值
*/
function checkAccount2(){
var result = 1;
$.ajax({
url : 'test.do',
type : "post",
data : {},
async : true,
success : function(data) {
result = 2;
}
});
return result;
} /**
* (1)同步调用 (2)且在ajax对全局变量进行设值 (3)ajax函数外将变量return
* 结果:返回 2。成功获取返回值
* 成功原因:先执行result = 2;再往下执行return result;
*/
function checkAccount3(){
var result = 1;
$.ajax({
url : 'test.do',
type : "post",
data : {},
async : false,
success : function(data) {
result = 2;
}
});
return result;
}

获取的ajax方法return的返回值的问题解析的更多相关文章

  1. jquery中ajax用return来返回值无效

    jquery中,ajax返回值,有三种写法,只有其中一种是成功的 /** * async:false,同步调用 * 返回1:2 * 失败 * 分析:ajax内部是一个或多个定义的函数,ajax中ret ...

  2. ajax jquery return没有返回值

    错误写法: function editdivisionmember(division_id,users_id){ $.ajax({ type:"POST", url:"/ ...

  3. Java中返回值定义为int类型的 方法return 1返回的是int还是Integer&&finally中return问题

    在Java中返回值定义为int类型的 方法return 1:中返回的是Integer值,在返回的时候基本类型值1被封装为Integer类型. 定义一个Test类,在异常处理try中和finally中分 ...

  4. Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...

  5. return 的返回值与结束功能

    前言:大家好~我是阿飞~在js中return是很重要的基础.一定要彻底掌握理解它哦.否则js学习到中后期很容易懵逼的+_+ 什么是return? 1.在js中return是一个表达式语句,如果后面什么 ...

  6. Java学习笔记13---如何理解“子类重写父类方法时,返回值若为类类型,则必须与父类返回值类型相同或为其子类”

    子类重新实现父类的方法称重写:重写时可以修改访问权限修饰符和返回值,方法名和参数类型及个数都不可以修改:仅当返回值为类类型时,重写的方法才可以修改返回值类型,且必须是父类方法返回值的子类:要么就不修改 ...

  7. 创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S

    题目补充: 创建一个接口Shape,其中有抽象方法area,类Circle .Rectangle实现area方法计算其面积并返回. 又有Star实现Shape的area方法,其返回值是0,Star类另 ...

  8. mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊

    mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊 dao方法 public List< ...

  9. 单元测试时候使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且应采用一个TestContext类型的参数报错的解决办法

    using Microsoft.VisualStudio.TestTools.UnitTesting; 如果该DLL应用的是 C:\Program Files\Microsoft Visual Stu ...

随机推荐

  1. 用Excel做数据分析常用函数(数据清理、关联匹配……)

    本文总结在使用Excel进行数据分析时,最常用的功能和函数. Excel的功能和函数非常多,用进废退,除了学习基本的函数和功能,最重要的是遇到问题可以快速的搜索并解决. 首先Excel可以处理的数据量 ...

  2. StartDT AI Lab | 视觉智能引擎——从Face ID说起,浅析顾客数字化

    “顾客就是上帝”,这句西谚揭示了顾客占据着商业活动中心地位这一客观规律.为了能更好地服务顾客,优化商家自身的服务与产品,对顾客的分析与需求调研一直是商业经营分析中的重中之重. 在商业互联网化.社会数字 ...

  3. 微信小程序开发-易源API的调用

    起因:在开发一款旅游类微信小程序时,需要接入大量的景点信息,此时可以选择自己新建数据库导入数据并读取,但是对于我来说,因为只有一个人,数据库还涉及到需要维护方面,选择调用已有API. 过程:首先查阅微 ...

  4. stm32 flash 存储

    转载自: http://bbs.elecfans.com/jishu_388272_1_1.html 说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用 ...

  5. 阿里云vpc网络SNAT实现内网实例通外网

    需求场景: 因费用和安全考虑,内网部分机器没有分配公网IP,没绑定弹性公网IP,没有购买NAT服务,但是内网机器需要访问外网部分资源,如发送邮件. 操作步骤如下: 1.查看外网上的转发功能的开启没开启 ...

  6. 2.mac下 安装go-ethereum

    Contents 上代码 A.前期准备:http://m.2cto.com/kf/201612/573010.html (1)安装python2.7,mac在终端中直接使用以下命令:brew inst ...

  7. Python的Flask框架开发RESTful API

    web框架选择 Django,流行但是笨重,还麻烦,人生苦短,肯定不选 web.py,轻量,但据说作者仙逝无人维护,好吧,先pass tornado,据说倡导自己造轮子,虽然是facebook开源的吧 ...

  8. 码海拾遗:strstr()、strcmp()和strcpy()实现

    1.strstr()实现 原型:char * strstr(const char * str1, const char * str2) 说明:判断str2是否为str1的子串,如果是则返回str2第一 ...

  9. Hexo和github搭建个人博客 - 朱晨

    GitHub账号 mac/pc 环境 12 node.jsgit 创建GitHub仓库 登陆GitHub,创建一个新的Respository Repository name叫做{username}.g ...

  10. LitePal

      Litepal采用的是对象关系映射(ORM)模式   LitePal的配置工作. 1.添加依赖  compile 'org.litepal.android:core:1.3.2' 2.配置lite ...