+++ /dev/null
-<html><head><title>/home/alan/gitlive/roojs1/Roo/data/ScriptTagProxy.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">/*
- * Based on:
- * Ext JS Library 1.1.1
- * Copyright(c) 2006-2007, Ext JS, LLC.
- *
- * Originally Released Under LGPL - original licence link has changed is not relivant.
- *
- * Fork - LGPL
- * <script type="text/javascript">
- */
-
-/**
- * @class Roo.data.ScriptTagProxy
- * An implementation of Roo.data.DataProxy that reads a data object from a URL which may be in a domain
- * other than the originating domain of the running page.<br><br>
- * <p>
- * <em>Note that if you are retrieving data from a page that is in a domain that is NOT the same as the originating domain
- * of the running page, you must use this class, rather than DataProxy.</em><br><br>
- * <p>
- * The content passed back from a server resource requested by a ScriptTagProxy is executable JavaScript
- * source code that is used as the source inside a &lt;script> tag.<br><br>
- * <p>
- * In order for the browser to process the returned data, the server must wrap the data object
- * with a call to a callback function, the name of which is passed as a parameter by the ScriptTagProxy.
- * Below is a Java example for a servlet which returns data for either a ScriptTagProxy, or an HttpProxy
- * depending on whether the callback name was passed:
- * <p>
- * <pre><code>
-boolean scriptTag = false;
-String cb = request.getParameter("callback");
-if (cb != null) {
- scriptTag = true;
- response.setContentType("text/javascript");
-} else {
- response.setContentType("application/x-json");
-}
-Writer out = response.getWriter();
-if (scriptTag) {
- out.write(cb + "(");
-}
-out.print(dataBlock.toJsonString());
-if (scriptTag) {
- out.write(");");
-}
-</pre></code>
- *
- * @constructor
- * @param {Object} config A configuration object.
- */
-</span><span class="jsdoc-var">Roo.data.ScriptTagProxy </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">){
- </span><span class="jsdoc-var">Roo.data.ScriptTagProxy.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
- </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">);
- </span><span class="jsdoc-var">this.head </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.getElementsByTagName</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"head"</span><span class="jsdoc-syntax">)[0];
-};
-
-</span><span class="jsdoc-var">Roo.data.ScriptTagProxy.TRANS_ID </span><span class="jsdoc-syntax">= 1000;
-
-</span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.data.ScriptTagProxy</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.data.DataProxy</span><span class="jsdoc-syntax">, {
- </span><span class="jsdoc-comment">/**
- * @cfg {String} url The URL from which to request the data object.
- */
- /**
- * @cfg {Number} timeout (Optional) The number of milliseconds to wait for a response. Defaults to 30 seconds.
- */
- </span><span class="jsdoc-var">timeout </span><span class="jsdoc-syntax">: 30000,
- </span><span class="jsdoc-comment">/**
- * @cfg {String} callbackParam (Optional) The name of the parameter to pass to the server which tells
- * the server the name of the callback function set up by the load call to process the returned data object.
- * Defaults to "callback".<p>The server-side processing must read this parameter value, and generate
- * javascript output which calls this named function passing the data object as its only parameter.
- */
- </span><span class="jsdoc-var">callbackParam </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"callback"</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-comment">/**
- * @cfg {Boolean} nocache (Optional) Defaults to true. Disable cacheing by adding a unique parameter
- * name to the request.
- */
- </span><span class="jsdoc-var">nocache </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
-
- </span><span class="jsdoc-comment">/**
- * Load data from the configured URL, read the data object into
- * a block of Roo.data.Records using the passed Roo.data.DataReader implementation, and
- * process that block using the passed callback.
- * @param {Object} params An object containing properties which are to be used as HTTP parameters
- * for the request to the remote server.
- * @param {Roo.data.DataReader} reader The Reader object which converts the data
- * object into a block of Roo.data.Records.
- * @param {Function} callback The function into which to pass the block of Roo.data.Records.
- * The function must be passed <ul>
- * <li>The Record block object</li>
- * <li>The "arg" argument from the load function</li>
- * <li>A boolean success indicator</li>
- * </ul>
- * @param {Object} scope The scope in which to call the callback
- * @param {Object} arg An optional argument which is passed to the callback as its second parameter.
- */
- </span><span class="jsdoc-var">load </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">params</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">reader</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arg</span><span class="jsdoc-syntax">){
- </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">"beforeload"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">params</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
-
- </span><span class="jsdoc-keyword">var </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">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">params</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.extraParams</span><span class="jsdoc-syntax">));
-
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.url</span><span class="jsdoc-syntax">;
- </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">;
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.nocache</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">url </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">());
- }
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">transId </span><span class="jsdoc-syntax">= ++</span><span class="jsdoc-var">Roo.data.ScriptTagProxy.TRANS_ID</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">trans </span><span class="jsdoc-syntax">= {
- </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">transId</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-var">cb </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"stcCallback"</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">transId</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-var">scriptId </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"stcScript"</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">transId</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-var">params </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">params</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-var">arg </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">arg</span><span class="jsdoc-syntax">,
- </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">callback </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">,
- </span><span class="jsdoc-var">reader </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">reader
- </span><span class="jsdoc-syntax">};
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">conn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
-
- </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">trans.cb</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">conn.handleResponse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">trans</span><span class="jsdoc-syntax">);
- };
-
- </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">String.format</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"&{0}={1}"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.callbackParam</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">trans.cb</span><span class="jsdoc-syntax">);
-
- </span><span class="jsdoc-keyword">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">){
- </span><span class="jsdoc-var">this.abort</span><span class="jsdoc-syntax">();
- }
-
- </span><span class="jsdoc-var">trans.timeoutId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.handleFailure.defer</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.timeout</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">trans</span><span class="jsdoc-syntax">]);
-
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">script </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"script"</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">script.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"src"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">script.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"type"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"text/javascript"</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">script.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"id"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">trans.scriptId</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.head.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">script</span><span class="jsdoc-syntax">);
-
- </span><span class="jsdoc-var">this.trans </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">trans</span><span class="jsdoc-syntax">;
- }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
- </span><span class="jsdoc-var">callback.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">||</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arg</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
- }
- },
-
- </span><span class="jsdoc-comment">// private
- </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-keyword">return </span><span class="jsdoc-var">this.trans </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">;
- },
-
- </span><span class="jsdoc-comment">/**
- * Abort the current server request.
- */
- </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-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isLoading</span><span class="jsdoc-syntax">()){
- </span><span class="jsdoc-var">this.destroyTrans</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.trans</span><span class="jsdoc-syntax">);
- }
- },
-
- </span><span class="jsdoc-comment">// private
- </span><span class="jsdoc-var">destroyTrans </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">trans</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">isLoaded</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">this.head.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.getElementById</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">trans.scriptId</span><span class="jsdoc-syntax">));
- </span><span class="jsdoc-var">clearTimeout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">trans.timeoutId</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">isLoaded</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">trans.cb</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">undefined</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">try</span><span class="jsdoc-syntax">{
- </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">trans.cb</span><span class="jsdoc-syntax">];
- }</span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){}
- }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
- </span><span class="jsdoc-comment">// if hasn't been loaded, wait for load to remove it to prevent script error
- </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">trans.cb</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
- </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">trans.cb</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">undefined</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">try</span><span class="jsdoc-syntax">{
- </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">trans.cb</span><span class="jsdoc-syntax">];
- }</span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){}
- };
- }
- },
-
- </span><span class="jsdoc-comment">// private
- </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">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">trans</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">this.trans </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-var">this.destroyTrans</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">trans</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">result</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
- </span><span class="jsdoc-var">result </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">trans.reader.readRecords</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
- }</span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"loadexception"</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-var">trans.arg</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">trans.callback.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">trans.scope</span><span class="jsdoc-syntax">||</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">trans.arg</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
- }
- </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"load"</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-var">trans.arg</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">trans.callback.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">trans.scope</span><span class="jsdoc-syntax">||</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">result</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">trans.arg</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
- },
-
- </span><span class="jsdoc-comment">// private
- </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">trans</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">this.trans </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-var">this.destroyTrans</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">trans</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"loadexception"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">trans.arg</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">trans.callback.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">trans.scope</span><span class="jsdoc-syntax">||</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">trans.arg</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
- }
-});</span></code></body></html>
\ No newline at end of file