ajax中success函数无法改变全局或局部变量的值

在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值。代码如下:

function modifyMissionSchedule(x,obj) {
    var PHONE = getPhone();
    var stream = {
        "MISSIONID":obj.parent().next("li").attr("id"),
        "PHONE":PHONE,
        "SCHEDULE":x, //修改后的进度
    };
     var EncryptData=dataProces(stream);
    var check=true;
    $.ajax({
        url: apiUrl+"modifyMissionSchedule.do?TAG=" + TAG,
        type: "POST",
        data: EncryptData,
        dataType: "json",
        cache: false,
        success: function(data) {
            if(data.CODE=="1"){
                getMissionLog();
                check=true;
            }
            else if(data.CODE=="-1"){
                check=false;
            }
        }
    });
    return check;
}

这样子,该函数的返回值就会无法改变,主要原因是ajax的异步机制。

只要加上一句async:false,问题即可解决。

function modifyMissionSchedule(x,obj) {
    var PHONE = getPhone();
    var stream = {
        "MISSIONID":obj.parent().next("li").attr("id"),
        "PHONE":PHONE,
        "SCHEDULE":x, //修改后的进度
    };
     var EncryptData=dataProces(stream);
    var check=true;
    $.ajax({
        url: apiUrl+"modifyMissionSchedule.do?TAG=" + TAG,
        type: "POST",
        data: EncryptData,
        dataType: "json",
        cache: false,
        async:false,
        success: function(data) {
            if(data.CODE=="1"){
                getMissionLog();
                check=true;
            }
            else if(data.CODE=="-1"){
                check=false;
            }
        }
    });
    return check;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏白驹过隙

ZeroMQ - 三种模型的python实现

46614
来自专栏刘晓杰

Okhttp3 Interceptor

3547
来自专栏向治洪

深入理解Android插件化技术

插件化技术可以说是Android高级工程师所必须具备的技能之一,从2012年插件化概念的提出(Android版本),到2016年插件化的百花争艳,可以说,插件化...

4967
来自专栏移动端开发

Android学习--持久化(三) SQLite & LitePal

    自己做为一个iOS开发,看到安卓这一块的时候,那中浓烈的熟悉味道更加强烈,SQLite这种轻量级的关系型数据库的使用在移动端相差不多,iOS有FMDB,...

1263
来自专栏developerHaoz 的安卓之旅

Android Loader 机制,让你的数据加载更加轻松

在 Android 中,任何耗时的操作都不能放在 UI 线程中,所以耗时的操作都需要使用异步加载来实现。其实,加载耗时数据的常用方式其实也挺多的,就让我们来看一...

581
来自专栏崔庆才的专栏

Scrapy框架的使用之Downloader Middleware的用法

5543
来自专栏linux驱动个人学习

Linux内存描述之内存区域zone--Linux内存管理(三)

为了支持NUMA模型,也即CPU对不同内存单元的访问时间可能不同,此时系统的物理内存被划分为几个节点(node), 一个node对应一个内存簇bank,即每个内...

1532
来自专栏cmazxiaoma的架构师之路

Android实战 粗略实现一个简单的C/S结构聊天室的功能

2195
来自专栏文大师的新世界

5. ListView应用

ListView大概是所有移动应用都会用到的组件了,大部分都在首页,这章结合redux来看如何从API取数据再到如何应用redux更新渲染组件ListView。

1485
来自专栏Android机动车

手撸Router——解决跨模块下的页面跳转

正是由于将项目模块化拆分,各模块之间没有任何依赖关系,也互相不可见,那么从A模块的a界面跳转到B模块的b界面该怎么办呢?

973

扫码关注云+社区