ext.ajax.request如何同步调用,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

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的小小区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值