cn-done 发表于 2013-1-29 11:39:13

ExtJs ajax调用汇总

//异步ajax调用/** * 异步调用ajax,成功后返回值,作为回调函数的参数 调用失败会提示 ** @param {} *            urlStr * @param {} *            paramsObj * @param {} *            callbackFunc */function ajaxCall(urlStr, paramsObj, callbackFunc) {Ext.Ajax.request({url : urlStr,params : paramsObj,method : 'POST',success : function(response) {if (callbackFunc) {var result = Ext.util.JSON.decode(response.responseText);var cbfn = callbackFunc.createCallback(result);cbfn();}},failure : function() {Ext.Msg.alert("提示", "方法调用失败");}});}/** *通用JS 同步ajax调用 返回json Object ** @param {} *            urlStr * @param {} *            paramsStr 为字符串键值对形式“key=value&key2=value2” * @return {} 返回json Object */function ajaxSyncCall(urlStr, paramsStr) {var obj;var value;if (window.ActiveXObject) {obj = new ActiveXObject('Microsoft.XMLHTTP');} else if (window.XMLHttpRequest) {obj = new XMLHttpRequest();}obj.open('POST', urlStr, false);obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');obj.send(paramsStr);var result = Ext.util.JSON.decode(obj.responseText);return result;} 
//EXTJS 同步ajax调用var conn = Ext.lib.Ajax.getConnectionObject().conn;conn.open("GET", 'your url',false);conn.send(null);alert(conn.responseText); 
EXTJS 修改Ext.Ajax.request真正的请求方法Ext.lib.Ajax.request ,通过sync:true实现同步调用ajax
Ext.lib.Ajax.request = function(method, uri, cb, data, options) {         if(options){             var hs = options.headers;             if(hs){               for(var h in hs){                     if(hs.hasOwnProperty(h)){                         this.initHeader(h, hs, false);                     }               }             }             if(options.xmlData){               if (!hs || !hs['Content-Type']){                     this.initHeader('Content-Type', 'text/xml', false);               }               method = (method ? method : (options.method ? options.method : 'POST'));               data = options.xmlData;             }else if(options.jsonData){               if (!hs || !hs['Content-Type']){                     this.initHeader('Content-Type', 'application/json', false);               }               method = (method ? method : (options.method ? options.method : 'POST'));               data = typeof options.jsonData == 'object' ? Ext.encode(options.jsonData) : options.jsonData;             }         }   
 
 return this["sync" in options ? "syncRequest" : "asyncRequest"](method, uri, cb, data);//这句制定调用的方法,如果sync传递了就调用syncRequest, 否则调用原来的方法asyncRequest};
Ext.lib.Ajax.syncRequest = function(method, uri, callback, postData)   {         var o = this.getConnectionObject();            if (!o) {             return null;         }         else {             o.conn.open(method, uri, false);                if (this.useDefaultXhrHeader) {               if (!this.defaultHeaders['X-Requested-With']) {                     this.initHeader('X-Requested-With', this.defaultXhrHeader, true);               }             }                if(postData && this.useDefaultHeader && (!this.hasHeaders || !this.headers['Content-Type'])){               this.initHeader('Content-Type', this.defaultPostHeader);             }                if (this.hasDefaultHeaders || this.hasHeaders) {               this.setHeader(o);             }                o.conn.send(postData || null);             this.handleTransactionResponse(o, callback);             return o;         }   };     
 
//调用Ext.Ajax.request({   url:'',   scope:this,   sync:true,   success:function(){}   });       

 
页: [1]
查看完整版本: ExtJs ajax调用汇总