Ext.Ajax.request同步请求
导读:
ajax分为2种,一种是同步,一种是异步
同步:代码执行完了之后才执行后面的代码
异步:代码刚执行,后面的代码就马上接着执行了,不管前面的代码是否执行完
异步的情况下,要获得返回信息,就需要在异步执行完之后写代码,也就是在success里面写代码,或者success里面调用其他的函数。
在Ext3.0以上的版本里面 ,Ext.Ajax.request是异步的,到Ext 4.0以后才支持同步请求的属性(没试过)
---------------------------------------------------------------------------------------------------------------------------------------------------------------
本人今天遇到的一个问题,其中一个项目中用到Ext3.4里面的Ext.Ajax.request请求,如下所示
Ext.Ajax.request({
url:'tempSaveRuleConfig.action',
method:'POST',
success:function(result,request)
{
tcProductDetailStore.modified = [];
tcProductDetailStore.reload();
var time = getServerTime();
if (time == '')
{
Ext.MessageBox.alert('ERROR','从服务器获取时间失败。');
return;
}
var win = new Ext.Window({
modal:true,
layout:'fit',
width:,
height:,
closeAction:'close'
});
win.show();
}
其中的
getServerTime()方法也是同样的ajax请求,但在其中加了一个属性, async : false, 想通过同步的方式获取时间后再继续往下判断时间是否为空来往下执行。
经百度和实验,发现 Ext3.+不支持同步的方法,只支持异步请求,这样当还没返回时间time的值,程序就又往下执行判断时间为空从而报错提示:从服务器获取时间失败。
那么问题来了,怎么去解决呢?
经过网上大牛指点,可以编写一个同步的请求方法,具体如下所示:
function getServerTime()
{
var obj;
if (window.ActiveXObject) {
obj = new ActiveXObject('Microsoft.XMLHTTP');
} else if (window.XMLHttpRequest) {
obj = new XMLHttpRequest();
}
var url = 'takeDptcServerTime.action';
obj.open('POST', url, false);
obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
obj.send(null);
var time = obj.responseText;
return time;
}
OK,经过测试,发现调用以上方法能实现同步的ajax请求。
具体可以参考这篇博文:
http://blog.csdn.net/linan0930/article/details/12556703
Ext.Ajax.request同步请求的更多相关文章
- Extjs4.0以上版本 Ext.Ajax.request请求的返回问题
Ext.Ajax.request({ url: posturl, method: 'POST', params: { ClassName: 'XXXX', FuncName: 'XXXX', para ...
- (ExtJs 3.4)Ext.Ajax.request的同步请求实现
ext3.0之前都是这样来提交:var responsea = Ext.lib.Ajax.getConnectionObject().conn;responsea.open("POST&qu ...
- ext 的loadmask 与ajax的同步请求水火不容
由于ajax 的同步请求会有一段请求时间.有的短.有的长,对于短的我们还是能接受的,不过长的话就必须处理一下了, 就比如处于ext 4.2.0的框架下,需要一个遮掩的样式,框架是有自带的,loadma ...
- ExtJS Ext.Ajax.request最好设为同步
ExtJS 中Ext.Ajax.request最好设为同步,即async: false,因为如果Ajax后面需要用到Ajax更新的数据的话,设置同步,后面才能用到最新的数据. function Get ...
- [转] form.getForm().submit的用法及Ext.Ajax.request的小小区别
原文地址:http://blog.csdn.net/hongleidy5000/article/details/7329325 if (!formDetail.getForm().isValid()) ...
- Ext.Ajax.request
function create(){ var itstate = $("#myselect").val(); Ext.Ajax.request({ url: '/servlet/A ...
- Ext.Ajax.request方法 参数
json数据服务器回传的方法. 在api总指出回传的格式{success;true,data:{clientName: "Fred. Olsen Lines", portOfL ...
- Ext.Ajax.request用法
向一个远程服务器发送HTTP请求. Ajax服务器请求是异步的, 所以对响应数据的处理需要使用回调函数来实现. var params = {}; var ret; Ext.Ajax.request({ ...
- EXTJS 资料 Ext.Ajax.request 获取返回数据
下面是一个登陆页面调用的EXTJS login function,通过 url: '/UI/HttpHandlerData/Login/Login.ashx',获取返回登陆账户和密码! Ext.onR ...
随机推荐
- typename使用在模板中区分static成员和类型
16.19 编写函数,接受一个容器的引用,打印容器中的元素,使用容器的size_type和size成员来控制打印元素的循环. 16.20 重写上一题的函数,使用begin和end返回的迭代器来控制循环 ...
- MFC/VC++ UI界面美化技术
1. 工具: 1.1设备环境类: Windows下的绘图操作说到底就是DC操作.DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它. ...
- Android(java)学习笔记195:三重for循环的优化(Java面试题)
1.首先我们看一段代码: for(int i=0;i<1000;i++){ for(int j=0;j<100;j++){ for(int k=0;k<10;k++){ testFu ...
- iOS UIKit:CollectionView之设计 (1)
collection view(UICollectionView对象)使用灵活和可扩展的布局来描述有序的数据项,其一般情况下以网格的形式来展示内容,但并非一定如此. 1 基础 为了将数据展示在屏幕中, ...
- CentOS7上Nginx的使用
Nginx 的启动 指定配置文件的方式启动nginx # nginx -c /etc/nginx/nginx.conf 对于yum安装的nginx,使用systemctl命令启动 # systemct ...
- 配置toad进行导入导出数据库操作
最近需要对oracle进行导入导出操作,于是研究使用toad进行导入导出oracle数据库操作,现稍作记录. oracle的导入导出不管是否使用toad还是pl/sql工具进行操作,实际上最终都是通过 ...
- couchbase failover 集群故障自动转移方案研究!
最近迷上Couchbase了,现在所有的站点全部试用Couchbase进行缓存及持久化,这样以来貌似风险比较大啊,缓存服务器挂了就完了. 看到有讲到Couchbase的集群方案很简单,于是照着教程做了 ...
- [原创]ie6,7中td和img之间有间隙
情形描述 开发工具:VS2010: 浏览器版本:IE6以上,火狐,谷歌: 页面布局设计:Table+Img布局: 项目预览问题:火狐,谷歌,IE8以上未出现问题,IE6,IE7图片之间有间隙. 分析原 ...
- js原型解析
我们都知道javascript因为具有了继承以及变量等等一系列的特性之后才被人们认为具有一门编程语言的资格,在后续的不断发展中,js在原生的基础上扩展了基于jquery等等的库,甚至衍生了像node. ...
- ZOJ 1074 To the Max(DP 最大子矩阵和)
To the Max Time Limit: 2 Seconds Memory Limit: 65536 KB Problem Given a two-dimensional array o ...