(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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章