EXT与DWR连接用Proxy第三方提供

以下代码是网上找来的,还没有验证是否可行,先贴在这等日后测试使用。
dwrproxy.js
  1. Ext.data.DWRProxy = function(dwrCall, pagingAndSort){
  2.   Ext.data.DWRProxy.superclass.constructor.call(this);
  3.   this.dwrCall = dwrCall;
  4.   //this.args = args;
  5.     this.pagingAndSort = (pagingAndSort!=undefined ? pagingAndSort : true);
  6. };
  7. Ext.extend(Ext.data.DWRProxy, Ext.data.DataProxy, {
  8.   load : function(params, reader, callback, scope, arg) {
  9.     if(this.fireEvent("beforeload"this, params) !== false) {
  10.       var delegate = this.loadResponse.createDelegate(this, [reader, callback, scope, arg], 1);
  11.       var callParams = new Array();
  12.       callParams.push(arg.params);
  13.       callParams.push(delegate);
  14.       this.dwrCall.apply(this, callParams);
  15.     } else {
  16.       callback.call(scope || thisnull, arg, false);
  17.     }
  18.   },
  19.   loadResponse : function(listRange, reader, callback, scope, arg) {
  20.     var result;
  21.     try {
  22.       result = reader.read(listRange);
  23.     } catch(e) {
  24.       this.fireEvent("loadexception"thisnull, response, e);
  25.       callback.call(scope, null, arg, false);
  26.       return;
  27.     }
  28.     callback.call(scope, result, arg, true);
  29.   },
  30.   update : function(dataSet){},
  31.   updateResponse : function(dataSet)
  32.   {}
  33. });
  34. Ext.data.ListRangeReader = function(meta, recordType){
  35.     Ext.data.ListRangeReader.superclass.constructor.call(this, meta, recordType);
  36.     this.recordType = recordType;
  37. };
  38. Ext.extend(Ext.data.ListRangeReader, Ext.data.DataReader, {
  39.   getJsonAccessor: function(){
  40.       var re = /[/[/.]/;
  41.       return function(expr) {
  42.           try {
  43.               return(re.test(expr))
  44.                   ? new Function("obj""return obj." + expr)
  45.                   : function(obj){
  46.                       return obj[expr];
  47.                   };
  48.           } catch(e){}
  49.           return Ext.emptyFn;
  50.       };
  51.   }(),
  52.     
  53.     read : function(o){
  54.         var recordType = this.recordType, fields = recordType.prototype.fields;
  55.         //Generate extraction functions for the totalProperty, the root, the id, and for each field
  56.         if (!this.ef) {
  57.             if(this.meta.totalProperty) {
  58.                 this.getTotal = this.getJsonAccessor(this.meta.totalProperty);
  59.             }
  60.         
  61.             if(this.meta.successProperty) {
  62.                 this.getSuccess = this.getJsonAccessor(this.meta.successProperty);
  63.             }
  64.             if (this.meta.id) {
  65.                 var g = this.getJsonAccessor(this.meta.id);
  66.                 this.getId = function(rec) {
  67.                     var r = g(rec);
  68.                     return (r === undefined || r === "") ? null : r;
  69.                 };
  70.             } else {
  71.                 this.getId = function(){return null;};
  72.             }
  73.             this.ef = [];
  74.             for(var i = 0; i < fields.length; i++){
  75.                 f = fields.items[i];
  76.                 var map = (f.mapping !== undefined && f.mapping !== null) ? f.mapping : f.name;
  77.                 this.ef[i] = this.getJsonAccessor(map);
  78.             }
  79.         }
  80.     var records = [];
  81.     var root = o.data, c = root.length, totalRecords = c, success = true;
  82.     if(this.meta.totalProperty){
  83.         var v = parseInt(this.getTotal(o), 10);
  84.             if(!isNaN(v)){
  85.                 totalRecords = v;
  86.             }
  87.         }
  88.         if(this.meta.successProperty){
  89.             var v = this.getSuccess(o);
  90.             if(v === false || v === 'false'){
  91.                 success = false;
  92.             }
  93.         }
  94.         for(var i = 0; i < c; i++){
  95.         var n = root[i];
  96.       var values = {};
  97.       var id = this.getId(n);
  98.       for(var j = 0; j < fields.length; j++){
  99.                 f = fields.items[j];
  100.         var v = this.ef[j](n);                      
  101.         values[f.name] = f.convert((v !== undefined) ? v : f.defaultValue);
  102.       }
  103.       var record = new recordType(values, id);
  104.       records[i] = record;
  105.     }
  106.     return {
  107.        success : success,
  108.        records : records,
  109.        totalRecords : totalRecords
  110.     };
  111.   }
  112. });

你可能感兴趣的:(function,DWR,ext,null,callback,dataset)