4 * Copyright(c) 2006-2007, Ext JS, LLC.
6 * Originally Released Under LGPL - original licence link has changed is not relivant.
9 * <script type="text/javascript">
12 * @class Roo.data.HttpProxy
13 * @extends Roo.data.DataProxy
14 * An implementation of {@link Roo.data.DataProxy} that reads a data object from an {@link Roo.data.Connection} object
15 * configured to reference a certain URL.<br><br>
17 * <em>Note that this class cannot be used to retrieve data from a domain other than the domain
18 * from which the running page was served.<br><br>
20 * For cross-domain access to remote data, use an {@link Roo.data.ScriptTagProxy}.</em><br><br>
22 * Be aware that to enable the browser to parse an XML document, the server must set
23 * the Content-Type header in the HTTP response to "text/xml".
25 * @param {Object} conn Connection config options to add to each request (e.g. {url: 'foo.php'} or
26 * an {@link Roo.data.Connection} object. If a Connection config is passed, the singleton {@link Roo.Ajax} object
27 * will be used to make the request.
29 Roo.data.HttpProxy = function(conn){
30 Roo.data.HttpProxy.superclass.constructor.call(this);
31 // is conn a conn config or a real conn?
33 Roo.apply(this.conn.xtype);
37 this.useAjax = !conn || !conn.events;
41 Roo.extend(Roo.data.HttpProxy, Roo.data.DataProxy, {
42 // thse are take from connection...
45 * @cfg {String} url (Optional) The default URL to be used for requests to the server. (defaults to undefined)
48 * @cfg {Object} extraParams (Optional) An object containing properties which are used as
49 * extra parameters to each request made by this object. (defaults to undefined)
52 * @cfg {Object} defaultHeaders (Optional) An object containing request headers which are added
53 * to each request made by this object. (defaults to undefined)
56 * @cfg {String} method (Optional) The default HTTP method to be used for requests. (defaults to undefined; if not set but parms are present will use POST, otherwise GET)
59 * @cfg {Number} timeout (Optional) The timeout in milliseconds to be used for requests. (defaults to 30000)
62 * @cfg {Boolean} autoAbort (Optional) Whether this request should abort any pending requests. (defaults to false)
68 * @cfg {Boolean} disableCaching (Optional) True to add a unique cache-buster param to GET requests. (defaults to true)
72 * Return the {@link Roo.data.Connection} object being used by this Proxy.
73 * @return {Connection} The Connection object. This object may be used to subscribe to events on
74 * a finer-grained basis than the DataProxy events.
76 getConnection : function(){
77 return this.useAjax ? Roo.Ajax : this.conn;
81 * Load data from the configured {@link Roo.data.Connection}, read the data object into
82 * a block of Roo.data.Records using the passed {@link Roo.data.DataReader} implementation, and
83 * process that block using the passed callback.
84 * @param {Object} params An object containing properties which are to be used as HTTP parameters
85 * for the request to the remote server.
86 * @param {Roo.data.DataReader} reader The Reader object which converts the data
87 * object into a block of Roo.data.Records.
88 * @param {Function} callback The function into which to pass the block of Roo.data.Records.
89 * The function must be passed <ul>
90 * <li>The Record block object</li>
91 * <li>The "arg" argument from the load function</li>
92 * <li>A boolean success indicator</li>
94 * @param {Object} scope The scope in which to call the callback
95 * @param {Object} arg An optional argument which is passed to the callback as its second parameter.
97 load : function(params, reader, callback, scope, arg){
98 if(this.fireEvent("beforeload", this, params) !== false){
100 params : params || {},
107 callback : this.loadResponse,
111 Roo.log('setting timeout to ' + this.timeout);
112 o.timeout = this.timeout;
115 Roo.applyIf(o, this.conn);
116 if(this.activeRequest){
117 Roo.Ajax.abort(this.activeRequest);
119 this.activeRequest = Roo.Ajax.request(o);
121 this.conn.request(o);
124 callback.call(scope||this, null, arg, false);
129 loadResponse : function(o, success, response){
130 delete this.activeRequest;
132 this.fireEvent("loadexception", this, o, response);
133 o.request.callback.call(o.request.scope, null, o.request.arg, false);
138 result = o.reader.read(response);
140 this.fireEvent("loadexception", this, o, response, e);
141 o.request.callback.call(o.request.scope, null, o.request.arg, false);
145 this.fireEvent("load", this, o, o.request.arg);
146 o.request.callback.call(o.request.scope, result, o.request.arg, true);
150 update : function(dataSet){
155 updateResponse : function(dataSet){