(ExtJs 3.0)Ext.Ajax.request的同步请求实现(转载)
ext3.0之前都是这样来提交:
var responsea = Ext.lib.Ajax.getConnectionObject().conn;
responsea.open("POST", your url,false);
responsea.send(null);
alert("返回来的数据为:"+responsea.responseText);
3.0版本的实现方式 需要引入一个新的js文件,叫做ext-basex.js,
Ext.Ajax.request({
url: "StreamingProxy.ashx",
method: "GET",
async: false, //ASYNC 是否异步( TRUE 异步 , FALSE 同步)
params: { //将真正的页面 (服务)url参数传递到代理页面
u: url,
m: "GET",
t: ""
},
success: function(response, opts) {
}, //请求成功的回调函数
failure: function() { alert("获取目录请求失败!"); } // 请求失败的回调函数
});
这个文件在FF12上使用会有问题,会导致无法请求,在IE和Chrome上没问题,需要做一些代码修改:
修改ext-basex-debug.js文件中的一条语句:
将下面一段代码:
if(callback && callback.timeout){
改成
if(callback && callback.timeout && options.async){
添加了“&& options.async”
如果你不是使用的debug版,使用的是压缩的版本,那么在ext-basex.js中查找“if(u&&u.timeout){”(注意不含引号),找到后修改为“if(u&&u.timeout&&n.async){”,当然,你可以直接替换。
结论:
将“if(u&&u.timeout){”改为“if(u&&u.timeout&&n.async){”
还有种方法:
in ext-basex.js 4.1 about line 1011
('timeout' in r) && (r.timeout = callback.timeout);
modified to :
(options.async) && ('timeout' in r) && (r.timeout = callback.timeout);
http://www.sencha.com/forum/showthread.php?21681-ext-basex-JIT-4.0-adapter-extensions-Ajax-enhancements-and-more./page42
博文转自http://blog.csdn.net/e_wsq/article/details/7521373