ExtJS4 ajax请求同步异步问题
今天在写代码过程中遇到一个奇怪的问题。事情是这种,我写了一个简单的页面用来删除选中的用户,请看以下:
由于后台的servlet的代码实现了依据用户名来删除一条记录。所以我在前台的ExtJS代码里面用了循环:
function deleteUsers(userList) {//删除用户
var msgTip = Ext.MessageBox.show({//显示正常删除的信息提示框
title : '提示',
width : 250,
msg : '正在删除用户请稍候'
});
var n = 0;
// alert(userList.length);
for (var i = 0; i < userList.length; i++) {
//for(var u in userList){
Ext.Ajax.request({
url : "../UserDeleteOneServlet",
method : 'POST',
params : {
username : userList[i]
},
//params:{username:u},
success : function(response) {
n++;
//alert(n);------1
}
});
}
//alert(n);-------2
if (n == userList.length) {
Ext.MessageBox.alert('提示', '所有删除成功');
} else {
Ext.MessageBox.alert('提示', '没有所有删除成功');
}
//alert(n);
updateUserList();
}
当中的userList是我得到的选中行的用户名列表数组。准备用for循环,当所有的请求发给后台的servlet并返回成功后,提示用户删除是否成功。
感觉逻辑毫无问题,结果却是跟想象相差非常多。貌似删除是成功了,可是给我提示个 “ 没有所有删除成功”。
究竟是怎么回事,我想可能是线程安全的问题或者是AJAX请求异步的问题,上网查了下,果然有人跟我遇到一样的问题 在 这里 和这里
原因说白了就是我在推断n==userList.length的时候,那个去做异步请求的ajax请求还没做完。输出的n自然不会是所有请求做完后的n了
解决办法是在ajax请求里面加一个配置项
async:false,
表示把请求设置为同步
然后代码中的n就得到了预想得到的结果了
ExtJS4 ajax请求同步异步问题的更多相关文章
- jQuery基础(Ajax,load(),getJSON(),getScript(),post(),ajax(),同步/异步请求数据)
1.使用load()方法异步请求数据 使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为: load(url,[data],[callba ...
- 如何将Ajax请求从异步改为同步
Ajax请求默认的都是异步的 如果想同步 async设置为false就可以(默认是true) var html = $.ajax({ url: "some.PHP", as ...
- ajax请求的异步嵌套问题分析
(本文章以as3代码为例) 问题的产生 在前端开发时,经常会使用到Ajax(Asynchronous Javascript And XML)请求向服务器查询信息(get)或交换数据(post),aja ...
- ajax之同步异步详解
同步:一堆任务,按顺序去执行,只能一件件的来,如一个厨师做菜 异步:一堆任务,可以同时进行,如多个厨师做菜 ...
- ajax请求同步与异步的区别
//同步请求 $.ajax({ type:'post', url:"<c:url value='/device/org/' />"+val, data:{'org ...
- NSMutableURLRequest Http 请求 同步 异步
#pragma mark get country code//同步 -(void)getFKjsonCountryCode { dispatch_async(dispatch_get_global_q ...
- Python爬虫连载9-JS加密之“盐”、ajax请求
一.JS加密之“盐” 1.salt属性“盐":多用于密码学,比如我们的银行卡是六位密码,但是实际上在银行的系统里,我们输入密码后,会给原始的密码添加若干字符,形成更加难以破解的密码.这个过 ...
- AJAX请求详解 同步异步 GET和POST
AJAX请求详解 同步异步 GET和POST 上一篇博文(http://www.cnblogs.com/mengdd/p/4191941.html)介绍了AJAX的概念和基本使用,附有一个小例子,下面 ...
- 关于HTTP请求、Ajax请求,请求的同步和异步
使用了很长时间的Ajax请求了,一直都是在以异步的方式在使用.昨天听了一个讲座涉及到apache server,偶然想到了这Ajax请求和HTTP请求的一些区别和联系,就在网上好好搜了一顿,把搜到的结 ...
随机推荐
- <a>标签深入讲解
标签中 href 和 onclick 的区别,以及href="javascript:xxx(this);"与onclick="xxx(this);" 传递thi ...
- gulp打包css/image/Less/Sass
其他的和打包前一篇随笔(打包js) http://www.cnblogs.com/teersky/p/7251329.html 相同,本篇文章主要写gulpFile.js的配置: 安装CSS打包插件: ...
- Reading a IMU Without Kalman: The Complementary Filter
目标是将惯性测量元件(IMU)之中陀螺仪.加速计的数据结合使用.Kalman filter太复杂,在微机上倾向用一种更简单的方法:Complementary filter 姿态估计(获得3个角度,俯仰 ...
- (转)source、sh、bash、./执行脚本的区别
source.sh.bash../执行脚本的区别 原文:https://www.cnblogs.com/sparkbj/p/5976100.html 1.source命令用法: source Fil ...
- cxf 框架 webservice
cxf 内置了一个web服务器 cxf简单入门实例 package test; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; import c ...
- ElasticSearch 2.1.1学习及总结
Install & Up cd elasticsearch-2.1.1/bin ./elasticsearch ./elasticsearch --cluster.name my_cluste ...
- memcached分布式部署
memcache和memcached两者使用起来几乎一模一样. $mem = new Memcache; $mem->addServer($memcachehost, '11211'); $me ...
- C# Uploadify 文件上传组件的使用
一.页面的构建 1.要引用的JS和CSS <link href="../css/jquery-ui.css" rel="stylesheet" type= ...
- Entity FrameWork利用Database.SqlQuery<T>执行存储过程并返回参数
目前,EF对存储过程的支持并不完善.存在以下问题: EF不支持存储过程返回多表联合查询的结果集. EF仅支持返回返回某个表的全部字段,以便转换成对应的实体.无法支持返回部分字段的情况. 虽然可以正常导 ...
- 在 Linux 上创建第一个 Service Fabric Java 应用程序
先决条件 开始之前,请安装 Service Fabric SDK.Azure CLI,并在 Linux 开发环境中设置开发群集. 如果使用 Mac OS X,则可使用 Vagrant 在虚拟机中设置 ...