1 <html><head><title>/home/edward/gitlive/roojs1/Roo/data/Connection.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
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">
15 * @class Roo.data.Connection
16 * @extends Roo.util.Observable
17 * The class encapsulates a connection to the page's originating domain, allowing requests to be made
18 * either to a configured URL, or to a URL specified at request time.
20 * Requests made by this class are asynchronous, and will return immediately. No data from
21 * the server will be available to the statement immediately following the {@link #request} call.
22 * To process returned data, use a callback in the request options object, or an event listener.
24 * Note: If you are doing a file upload, you will not get a normal response object sent back to
25 * your callback or event handler. Since the upload is handled via in IFRAME, there is no XMLHttpRequest.
26 * The response object is created using the innerHTML of the IFRAME's document as the responseText
27 * property and, if present, the IFRAME's XML document as the responseXML property.
29 * This means that a valid XML or HTML document must be returned. If JSON data is required, it is suggested
30 * that it be placed either inside a &lt;textarea> in an HTML document and retrieved from the responseText
31 * using a regex, or inside a CDATA section in an XML document and retrieved from the responseXML using
32 * standard DOM methods.
34 * @param {Object} config a configuration object.
36 </span><span class="jsdoc-var">Roo.data.Connection </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
37 </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
38 </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
39 </span><span class="jsdoc-comment">/**
40 * @event beforerequest
41 * Fires before a network request is made to retrieve a data object.
42 * @param {Connection} conn This Connection object.
43 * @param {Object} options The options config object passed to the {@link #request} method.
45 </span><span class="jsdoc-string">"beforerequest" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
46 </span><span class="jsdoc-comment">/**
47 * @event requestcomplete
48 * Fires if the request was successfully completed.
49 * @param {Connection} conn This Connection object.
50 * @param {Object} response The XHR object containing the response data.
51 * See {@link http://www.w3.org/TR/XMLHttpRequest/} for details.
52 * @param {Object} options The options config object passed to the {@link #request} method.
54 </span><span class="jsdoc-string">"requestcomplete" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
55 </span><span class="jsdoc-comment">/**
56 * @event requestexception
57 * Fires if an error HTTP status was returned from the server.
58 * See {@link http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html} for details of HTTP status codes.
59 * @param {Connection} conn This Connection object.
60 * @param {Object} response The XHR object containing the response data.
61 * See {@link http://www.w3.org/TR/XMLHttpRequest/} for details.
62 * @param {Object} options The options config object passed to the {@link #request} method.
64 </span><span class="jsdoc-string">"requestexception" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
65 </span><span class="jsdoc-syntax">});
66 </span><span class="jsdoc-var">Roo.data.Connection.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
69 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.data.Connection</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.util.Observable</span><span class="jsdoc-syntax">, {
70 </span><span class="jsdoc-comment">/**
71 * @cfg {String} url (Optional) The default URL to be used for requests to the server. (defaults to undefined)
74 * @cfg {Object} extraParams (Optional) An object containing properties which are used as
75 * extra parameters to each request made by this object. (defaults to undefined)
78 * @cfg {Object} defaultHeaders (Optional) An object containing request headers which are added
79 * to each request made by this object. (defaults to undefined)
82 * @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)
85 * @cfg {Number} timeout (Optional) The timeout in milliseconds to be used for requests. (defaults to 30000)
87 </span><span class="jsdoc-var">timeout </span><span class="jsdoc-syntax">: 30000,
88 </span><span class="jsdoc-comment">/**
89 * @cfg {Boolean} autoAbort (Optional) Whether this request should abort any pending requests. (defaults to false)
92 </span><span class="jsdoc-var">autoAbort</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
94 </span><span class="jsdoc-comment">/**
95 * @cfg {Boolean} disableCaching (Optional) True to add a unique cache-buster param to GET requests. (defaults to true)
98 </span><span class="jsdoc-var">disableCaching</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
100 </span><span class="jsdoc-comment">/**
101 * Sends an HTTP request to a remote server.
102 * @param {Object} options An object which may contain the following properties:<ul>
103 * <li><b>url</b> {String} (Optional) The URL to which to send the request. Defaults to configured URL</li>
104 * <li><b>params</b> {Object/String/Function} (Optional) An object containing properties which are used as parameters to the
105 * request, a url encoded string or a function to call to get either.</li>
106 * <li><b>method</b> {String} (Optional) The HTTP method to use for the request. Defaults to the configured method, or
107 * if no method was configured, "GET" if no parameters are being sent, and "POST" if parameters are being sent.</li>
108 * <li><b>callback</b> {Function} (Optional) The function to be called upon receipt of the HTTP response.
109 * The callback is called regardless of success or failure and is passed the following parameters:<ul>
110 * <li>options {Object} The parameter to the request call.</li>
111 * <li>success {Boolean} True if the request succeeded.</li>
112 * <li>response {Object} The XMLHttpRequest object containing the response data.</li>
113 * </ul></li>
114 * <li><b>success</b> {Function} (Optional) The function to be called upon success of the request.
115 * The callback is passed the following parameters:<ul>
116 * <li>response {Object} The XMLHttpRequest object containing the response data.</li>
117 * <li>options {Object} The parameter to the request call.</li>
118 * </ul></li>
119 * <li><b>failure</b> {Function} (Optional) The function to be called upon failure of the request.
120 * The callback is passed the following parameters:<ul>
121 * <li>response {Object} The XMLHttpRequest object containing the response data.</li>
122 * <li>options {Object} The parameter to the request call.</li>
123 * </ul></li>
124 * <li><b>scope</b> {Object} (Optional) The scope in which to execute the callbacks: The "this" object
125 * for the callback function. Defaults to the browser window.</li>
126 * <li><b>form</b> {Object/String} (Optional) A form object or id to pull parameters from.</li>
127 * <li><b>isUpload</b> {Boolean} (Optional) True if the form object is a file upload (will usually be automatically detected).</li>
128 * <li><b>headers</b> {Object} (Optional) Request headers to set for the request.</li>
129 * <li><b>xmlData</b> {Object} (Optional) XML document to use for the post. Note: This will be used instead of
130 * params for the post data. Any params will be appended to the URL.</li>
131 * <li><b>disableCaching</b> {Boolean} (Optional) True to add a unique cache-buster param to GET requests.</li>
133 * @return {Number} transactionId
135 </span><span class="jsdoc-var">request </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
136 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"beforerequest"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
137 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o.params</span><span class="jsdoc-syntax">;
139 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"function"</span><span class="jsdoc-syntax">){
140 </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">p.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.scope</span><span class="jsdoc-syntax">||</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
142 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"object"</span><span class="jsdoc-syntax">){
143 </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.urlEncode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.params</span><span class="jsdoc-syntax">);
145 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.extraParams</span><span class="jsdoc-syntax">){
146 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">extras </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.urlEncode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.extraParams</span><span class="jsdoc-syntax">);
147 </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">extras</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">extras</span><span class="jsdoc-syntax">;
150 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o.url </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.url</span><span class="jsdoc-syntax">;
151 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'function'</span><span class="jsdoc-syntax">){
152 </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">url.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.scope</span><span class="jsdoc-syntax">||</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
155 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.form</span><span class="jsdoc-syntax">){
156 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">form </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.form</span><span class="jsdoc-syntax">);
157 </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">form.action</span><span class="jsdoc-syntax">;
159 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">enctype </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">form.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"enctype"</span><span class="jsdoc-syntax">);
161 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.formData</span><span class="jsdoc-syntax">) {
162 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.doFormDataUpload</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">);
165 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.isUpload </span><span class="jsdoc-syntax">|| (</span><span class="jsdoc-var">enctype </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">enctype.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'multipart/form-data'</span><span class="jsdoc-syntax">)){
166 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.doFormUpload</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">);
168 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Ajax.serializeForm</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">form</span><span class="jsdoc-syntax">);
169 </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">;
172 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">hs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o.headers</span><span class="jsdoc-syntax">;
173 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.defaultHeaders</span><span class="jsdoc-syntax">){
174 </span><span class="jsdoc-var">hs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hs </span><span class="jsdoc-syntax">|| {}, </span><span class="jsdoc-var">this.defaultHeaders</span><span class="jsdoc-syntax">);
175 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">o.headers</span><span class="jsdoc-syntax">){
176 </span><span class="jsdoc-var">o.headers </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">hs</span><span class="jsdoc-syntax">;
180 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cb </span><span class="jsdoc-syntax">= {
181 </span><span class="jsdoc-var">success</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.handleResponse</span><span class="jsdoc-syntax">,
182 </span><span class="jsdoc-var">failure</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.handleFailure</span><span class="jsdoc-syntax">,
183 </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">,
184 </span><span class="jsdoc-var">argument</span><span class="jsdoc-syntax">: {</span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">},
185 </span><span class="jsdoc-var">timeout </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">o.timeout </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.timeout
186 </span><span class="jsdoc-syntax">};
188 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">method </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o.method</span><span class="jsdoc-syntax">||</span><span class="jsdoc-var">this.method</span><span class="jsdoc-syntax">||(</span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"POST" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"GET"</span><span class="jsdoc-syntax">);
190 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">method </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'GET' </span><span class="jsdoc-syntax">&& (</span><span class="jsdoc-var">this.disableCaching </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">o.disableCaching </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) || </span><span class="jsdoc-var">o.disableCaching </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">){
191 </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">+= (</span><span class="jsdoc-var">url.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'?'</span><span class="jsdoc-syntax">) != -1 ? </span><span class="jsdoc-string">'&' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'?'</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">'_dc=' </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getTime</span><span class="jsdoc-syntax">());
194 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">o.autoAbort </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'boolean'</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// options gets top priority
195 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.autoAbort</span><span class="jsdoc-syntax">){
196 </span><span class="jsdoc-var">this.abort</span><span class="jsdoc-syntax">();
198 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.autoAbort </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
199 </span><span class="jsdoc-var">this.abort</span><span class="jsdoc-syntax">();
202 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">method </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'GET' </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">) || </span><span class="jsdoc-var">o.xmlData</span><span class="jsdoc-syntax">){
203 </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">+= (</span><span class="jsdoc-var">url.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'?'</span><span class="jsdoc-syntax">) != -1 ? </span><span class="jsdoc-string">'&' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'?'</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">;
204 </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
206 </span><span class="jsdoc-var">this.transId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Ajax.request</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">method</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cb</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
207 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.transId</span><span class="jsdoc-syntax">;
208 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
209 </span><span class="jsdoc-var">Roo.callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.callback</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o.scope</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">]);
210 </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
214 </span><span class="jsdoc-comment">/**
215 * Determine whether this object has a request outstanding.
216 * @param {Number} transactionId (Optional) defaults to the last transaction
217 * @return {Boolean} True if there is an outstanding request.
219 </span><span class="jsdoc-var">isLoading </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">transId</span><span class="jsdoc-syntax">){
220 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">transId</span><span class="jsdoc-syntax">){
221 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.lib.Ajax.isCallInProgress</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">transId</span><span class="jsdoc-syntax">);
222 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
223 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.transId </span><span class="jsdoc-syntax">? </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
227 </span><span class="jsdoc-comment">/**
228 * Aborts any outstanding request.
229 * @param {Number} transactionId (Optional) defaults to the last transaction
231 </span><span class="jsdoc-var">abort </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">transId</span><span class="jsdoc-syntax">){
232 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">transId </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.isLoading</span><span class="jsdoc-syntax">()){
233 </span><span class="jsdoc-var">Roo.lib.Ajax.abort</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">transId </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.transId</span><span class="jsdoc-syntax">);
237 </span><span class="jsdoc-comment">// private
238 </span><span class="jsdoc-var">handleResponse </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">){
239 </span><span class="jsdoc-var">this.transId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
240 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">options </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">response.argument.options</span><span class="jsdoc-syntax">;
241 </span><span class="jsdoc-var">response.argument </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">options </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">options.argument </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
242 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"requestcomplete"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">);
243 </span><span class="jsdoc-var">Roo.callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">options.success</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options.scope</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">]);
244 </span><span class="jsdoc-var">Roo.callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">options.callback</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options.scope</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">]);
247 </span><span class="jsdoc-comment">// private
248 </span><span class="jsdoc-var">handleFailure </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
249 </span><span class="jsdoc-var">this.transId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
250 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">options </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">response.argument.options</span><span class="jsdoc-syntax">;
251 </span><span class="jsdoc-var">response.argument </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">options </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">options.argument </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
252 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"requestexception"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
253 </span><span class="jsdoc-var">Roo.callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">options.failure</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options.scope</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">]);
254 </span><span class="jsdoc-var">Roo.callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">options.callback</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">options.scope</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">]);
257 </span><span class="jsdoc-comment">// private
258 </span><span class="jsdoc-var">doFormUpload </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">){
259 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.id</span><span class="jsdoc-syntax">();
260 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">frame </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'iframe'</span><span class="jsdoc-syntax">);
261 </span><span class="jsdoc-var">frame.id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">;
262 </span><span class="jsdoc-var">frame.name </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">;
263 </span><span class="jsdoc-var">frame.className </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'x-hidden'</span><span class="jsdoc-syntax">;
264 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">){
265 </span><span class="jsdoc-var">frame.src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.SSL_SECURE_URL</span><span class="jsdoc-syntax">;
267 </span><span class="jsdoc-var">document.body.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frame</span><span class="jsdoc-syntax">);
269 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">){
270 </span><span class="jsdoc-var">document.frames</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">;
273 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">form </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.form</span><span class="jsdoc-syntax">);
274 </span><span class="jsdoc-var">form.target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">;
275 </span><span class="jsdoc-var">form.method </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'POST'</span><span class="jsdoc-syntax">;
276 </span><span class="jsdoc-var">form.enctype </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">form.encoding </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'multipart/form-data'</span><span class="jsdoc-syntax">;
277 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">){
278 </span><span class="jsdoc-var">form.action </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">;
281 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">hiddens</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">hd</span><span class="jsdoc-syntax">;
282 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// add dynamic params
283 </span><span class="jsdoc-var">hiddens </span><span class="jsdoc-syntax">= [];
284 </span><span class="jsdoc-var">ps </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.urlDecode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
285 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">){
286 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ps.hasOwnProperty</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">)){
287 </span><span class="jsdoc-var">hd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'input'</span><span class="jsdoc-syntax">);
288 </span><span class="jsdoc-var">hd.type </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'hidden'</span><span class="jsdoc-syntax">;
289 </span><span class="jsdoc-var">hd.name </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">;
290 </span><span class="jsdoc-var">hd.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">];
291 </span><span class="jsdoc-var">form.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hd</span><span class="jsdoc-syntax">);
292 </span><span class="jsdoc-var">hiddens.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hd</span><span class="jsdoc-syntax">);
297 </span><span class="jsdoc-keyword">function </span><span class="jsdoc-var">cb</span><span class="jsdoc-syntax">(){
298 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= { </span><span class="jsdoc-comment">// bogus response object
299 </span><span class="jsdoc-var">responseText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
300 </span><span class="jsdoc-var">responseXML </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null
301 </span><span class="jsdoc-syntax">};
303 </span><span class="jsdoc-var">r.argument </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">o.argument </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
305 </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{ </span><span class="jsdoc-comment">//
306 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">doc</span><span class="jsdoc-syntax">;
307 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">){
308 </span><span class="jsdoc-var">doc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">frame.contentWindow.document</span><span class="jsdoc-syntax">;
309 }</span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
310 </span><span class="jsdoc-var">doc </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">frame.contentDocument </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">window.frames</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.document</span><span class="jsdoc-syntax">);
312 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">doc </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">doc.body</span><span class="jsdoc-syntax">){
313 </span><span class="jsdoc-var">r.responseText </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">doc.body.innerHTML</span><span class="jsdoc-syntax">;
315 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">doc </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">doc.XMLDocument</span><span class="jsdoc-syntax">){
316 </span><span class="jsdoc-var">r.responseXML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">doc.XMLDocument</span><span class="jsdoc-syntax">;
317 }</span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
318 </span><span class="jsdoc-var">r.responseXML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">doc</span><span class="jsdoc-syntax">;
321 </span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
322 </span><span class="jsdoc-comment">// ignore
323 </span><span class="jsdoc-syntax">}
325 </span><span class="jsdoc-var">Roo.EventManager.removeListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frame</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'load'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cb</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
327 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"requestcomplete"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
328 </span><span class="jsdoc-var">Roo.callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.success</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o.scope</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">]);
329 </span><span class="jsdoc-var">Roo.callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.callback</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o.scope</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">]);
331 </span><span class="jsdoc-var">setTimeout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){</span><span class="jsdoc-var">document.body.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frame</span><span class="jsdoc-syntax">);}, 100);
334 </span><span class="jsdoc-var">Roo.EventManager.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frame</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'load'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cb</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
335 </span><span class="jsdoc-var">form.submit</span><span class="jsdoc-syntax">();
337 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hiddens</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// remove dynamic params
338 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">hiddens.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">< </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
339 </span><span class="jsdoc-var">form.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hiddens</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
343 </span><span class="jsdoc-comment">// this is a 'formdata version???'
346 </span><span class="jsdoc-var">doFormDataUpload </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ps</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">)
348 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">form </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.form</span><span class="jsdoc-syntax">);
349 </span><span class="jsdoc-var">form.enctype </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">form.encoding </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'multipart/form-data'</span><span class="jsdoc-syntax">;
350 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">formData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o.formData </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">? </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">FormData</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">form</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">o.formData</span><span class="jsdoc-syntax">;
352 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cb </span><span class="jsdoc-syntax">= {
353 </span><span class="jsdoc-var">success</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.handleResponse</span><span class="jsdoc-syntax">,
354 </span><span class="jsdoc-var">failure</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.handleFailure</span><span class="jsdoc-syntax">,
355 </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">,
356 </span><span class="jsdoc-var">argument</span><span class="jsdoc-syntax">: {</span><span class="jsdoc-var">options</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">},
357 </span><span class="jsdoc-var">timeout </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">o.timeout </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.timeout
358 </span><span class="jsdoc-syntax">};
360 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">o.autoAbort </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'boolean'</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// options gets top priority
361 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.autoAbort</span><span class="jsdoc-syntax">){
362 </span><span class="jsdoc-var">this.abort</span><span class="jsdoc-syntax">();
364 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.autoAbort </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
365 </span><span class="jsdoc-var">this.abort</span><span class="jsdoc-syntax">();
368 </span><span class="jsdoc-comment">//Roo.lib.Ajax.defaultPostHeader = null;
369 </span><span class="jsdoc-var">Roo.lib.Ajax.useDefaultHeader </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
370 </span><span class="jsdoc-var">this.transId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Ajax.request</span><span class="jsdoc-syntax">( </span><span class="jsdoc-string">"POST"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cb</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o.formData</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
371 </span><span class="jsdoc-var">Roo.lib.Ajax.useDefaultHeader </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
377 </span></code></body></html>