在使用extjs3.3的过程中,发现extjs3.x已经把extjs2.x中的ajax同步请求的方法(Ext.lib.Ajax.getConnectionObjec)干掉了,那如何时好?在一些特定场合下,还是需要ajax的同步请求来能满足需求!很简单,extjs3.x既然指导这个方法去掉了,那我们自行把这个方法还不行吗?!把以下代码放到一个js文件中,使用的时候把此js文件引进页面即可。
Ext.lib.Ajax.getConnectionObject = function() { var activeX = ['MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; function createXhrObject(transactionId) { var http; try { http = new XMLHttpRequest(); } catch (e) { for (var i = 0; i < activeX.length; ++i) { try { http = new ActiveXObject(activeX[i]); break; } catch (e) { } } } finally { return { conn : http, tId : transactionId }; } } var o; try { if (o = createXhrObject(Ext.lib.Ajax.transactionId)) { Ext.lib.Ajax.transactionId++; } } catch (e) { } finally { return o; } };
以下是一个简单的使用例子:
var conn = Ext.lib.Ajax.getConnectionObject().conn; conn.open("POST", "YourRequestUrl", false); conn.send(null); var result = eval("(" + conn.responseText + ")");