ajax中的同步与异步修改数据的问题
这次项目中因为前端有事儿,项目紧急加个新需求,于是自己硬着头皮上去看了下前端的逻辑后便开始动手了,但是为了简单起见就直接自己写了个ajax调服务来获取数据,然后修改前端定义的全局数据
//ajax来请求数据
$.ajax({
method:config.methodGet,
url:"http://localhost:8080/yzxx",
dataType:'json',
data:{"xxx":"111"},
success: function (data) {
var _data=data;
if(_data){
_this.mapKey = data.mapKey;
_this.mapID = data.mapID;
_this.level = data.level;
_this.isQsMap = data.isQsMap;
_this.isReturn = data.isViewReturn;
}
},
error: function (data,textStatus, errorThrown) {
// 报错信息
fdGlobal.requestError(data, textStatus, errorThrown);
}
});
_this对象是前端定义的一个全局变量,在示例代码中我修改了_this对象里面的值,并希望在后面的程序执行时使用我修改后的_this对象,但是经过在代码执行中,经过js调试发现,在第二个ajax中_this作为参数,查看_this的值已经改变,但是在后台服务中接收到的参数并没有改变,经过查阅资料得知,ajax默认为异步请求,在开始执行ajax代码时,后面的代码不会等待ajax请求执行完毕便会直接执行,所以我在第一个ajax中修改了_this的值,在还没有修改完毕时,第二个ajax开始执行,这时用到的参数_this是还没有修改的值,所以后台接收到了旧的值,而在第二个ajax将请求发送到后台之后,_this的值才被第一个ajax请求修改,所以需要注意,在ajax请求中如果对全局参数有修改的行为,并且后面需要用到修改后的正确值,需要对方法标注为同步请求,具体方式为增加参数 async:false 示例如下
$.ajax({
method:config.methodGet,
url:"http://localhost:8080/yzxx",
dataType:'json',
//设置为同步请求
async:false,
data:{"xxx":"111"},
success: function (data) {
var _data=data;
if(_data){
_this.mapKey = data.mapKey;
_this.mapID = data.mapID;
_this.level = data.level;
_this.isQsMap = data.isQsMap;
_this.isReturn = data.isViewReturn;
}
},
error: function (data,textStatus, errorThrown) {
// 报错信息
fdGlobal.requestError(data, textStatus, errorThrown);
}
});
ajax中的同步与异步修改数据的问题的更多相关文章
- Ajax中的同步和异步
var flag=true; ; $.ajax({ url: "http://www.jb51.net/", success: function(data){ flag=false ...
- 关于js中的同步和异步
最近看到前端面试问到js中的同步和异步,这个问题该怎么回答? 梳理一下,js对于异步的处理,很多人的第一反应是ajax,这只能说是对了一半. 1.个人觉得,js中,最基础的异步是setTimeout和 ...
- Promise-js中的同步和异步
js中的同步和异步 自从读了研后,走上了学术之路,每天除了看论文就是做实验,最后发现自己还是喜欢开发呀,于是我又重回前端啦~ 隔了这么久没学前端,好像很多东西都忘了不少,而且不得不说前端的技术更新 ...
- 一、表单和ajax中的post请求&&后台获取数据方法
一.表单和ajax中的post请求&&后台获取数据方法 最近要做后台数据接收,因为前台传来的数据太过于混乱,所以总结了一下前台数据post请求方法,顺便写了下相对应的后台接收方法. 前 ...
- js中请求数据的$post和$ajax区别(同步和异步问题)
$.post和$.Ajax都为页面上向后台发送请求,请求数据 1.post 因为post默认为异步请求,可是有时候我们会发现,本来要求请求马上出现,可是异步会导致后面突然再执行,这样就出很多问题 2. ...
- input屏蔽历史记录 ;function($,undefined) 前面的分号是什么用处 JSON 和 JSONP 两兄弟 document.body.scrollTop与document.documentElement.scrollTop兼容 URL中的# 网站性能优化 前端必知的ajax 简单理解同步与异步 那些年,我们被耍过的bug——has
input屏蔽历史记录 设置input的扩展属性autocomplete 为off即可 ;function($,undefined) 前面的分号是什么用处 ;(function($){$.ex ...
- js中的同步与异步
同步:提交后等待服务器的响应,接收服务器返回的数据后再执行下面的代码 异步:与上面相反,提交后继续执行下面的代码,而在后台继续监听,服务器响应后有程序做相应处理,异步的操作好处是不必等待服务器而 ...
- 让你高效的理解JavaScript中的同步、异步和事件循环
"同步请求","异步请求"相信这两词在程序猿的世界中频频出现,到底是词性的妖娆,还是撸代码的基础要求,下面直接分享本人学习的好东西,保证让你深入浅出,爽得不要不 ...
- JS中的同步和异步
javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流水线而已,要 ...
随机推荐
- Linux内核剖析(五)Linux内核的构建过程
参考 一次实验引发的故事 – kernel build system探索—vmlinux是如何炼成的– kernel makefile 深度探索Linux操作系统:系统构建和原理解析.pdf 问题 在 ...
- PHP-问题处理验证码无法显示出来
1.问题 今天重新安装了ubuntu,PHP,MySQL,Apache,到测试CMS项目时发生一个错误: 验证码无法显示出来. 2.解决: 2.1 使用 phpinfo检查: phpinfo(); 在 ...
- easyui的datagrid和treegrid的使用
$('#listTree').treegrid({ idField: 'id', treeField: 'menuName', columns: [[ { title: 'Task Name', fi ...
- zookeeper入门及使用(一)- 安装及操作
zookeeper是什么? highly reliable distributed coordination,用来做高可靠的分布式协调者,可用来: 业务发现(service discovery)找到分 ...
- 01Spark的TopN问题
和hadoop的目的一样,给你数据,然后取TopN.数据如下: 取出数据在排名前十的数据. 代码如下: package com.test.book; import java.util.ArrayLis ...
- ftrace:跟踪你的内核函数! | Linux 中国
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79161135 ftrace 是一个 L ...
- Linux下Qt Creator编辑器无法输入中文解决
Ubuntu安装了搜狗输入法,在浏览器中可以使用,但是在Qt Creator中却无法输入中文. 解决办法: 执行sudo apt-get install fcitx-libs-qt5 该命令将库文件l ...
- 关于Kafka broker IO的讨论
Apache Kafka是大量使用磁盘和页缓存(page cache)的,特别是对page cache的应用被视为是Kafka实现高吞吐量的重要因素之一.实际场景中用户调整page cache的手段并 ...
- python @staticmethod和@classmethod的作用
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...
- xgboost原理
出处http://blog.csdn.net/a819825294 1.序 距离上一次编辑将近10个月,幸得爱可可老师(微博)推荐,访问量陡增.最近毕业论文与xgboost相关,于是重新写一下这篇文章 ...