this.bind = function()

in plugins/struts2-dojo-plugin/src/main/resources/org/apache/struts2/static/dojo/src/io/ScriptSrcIO.js [85:186]


	this.bind = function (kwArgs) {
		var url = kwArgs.url;
		var query = "";
		if (kwArgs["formNode"]) {
			var ta = kwArgs.formNode.getAttribute("action");
			if ((ta) && (!kwArgs["url"])) {
				url = ta;
			}
			var tp = kwArgs.formNode.getAttribute("method");
			if ((tp) && (!kwArgs["method"])) {
				kwArgs.method = tp;
			}
			query += dojo.io.encodeForm(kwArgs.formNode, kwArgs.encoding, kwArgs["formFilter"]);
		}
		if (url.indexOf("#") > -1) {
			dojo.debug("Warning: dojo.io.bind: stripping hash values from url:", url);
			url = url.split("#")[0];
		}
		var urlParts = url.split("?");
		if (urlParts && urlParts.length == 2) {
			url = urlParts[0];
			query += (query ? "&" : "") + urlParts[1];
		}
		if (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"]) {
			dojo.undo.browser.addToHistory(kwArgs);
		}
		var id = kwArgs["apiId"] ? kwArgs["apiId"] : "id" + this._counter++;
		var content = kwArgs["content"];
		var jsonpName = kwArgs.jsonParamName;
		if (kwArgs.sendTransport || jsonpName) {
			if (!content) {
				content = {};
			}
			if (kwArgs.sendTransport) {
				content["dojo.transport"] = "scriptsrc";
			}
			if (jsonpName) {
				content[jsonpName] = "dojo.io.ScriptSrcTransport._state." + id + ".jsonpCall";
			}
		}
		if (kwArgs.postContent) {
			query = kwArgs.postContent;
		} else {
			if (content) {
				query += ((query) ? "&" : "") + dojo.io.argsFromMap(content, kwArgs.encoding, jsonpName);
			}
		}
		if (kwArgs["apiId"]) {
			kwArgs["useRequestId"] = true;
		}
		var state = {"id":id, "idParam":"_dsrid=" + id, "url":url, "query":query, "kwArgs":kwArgs, "startTime":(new Date()).getTime(), "isFinishing":false};
		if (!url) {
			this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"url.none"});
			return;
		}
		if (content && content[jsonpName]) {
			state.jsonp = content[jsonpName];
			state.jsonpCall = function (data) {
				if (data["Error"] || data["error"]) {
					if (dojo["json"] && dojo["json"]["serialize"]) {
						dojo.debug(dojo.json.serialize(data));
					}
					dojo.io.ScriptSrcTransport._finish(this, "error", data);
				} else {
					dojo.io.ScriptSrcTransport._finish(this, "load", data);
				}
			};
		}
		if (kwArgs["useRequestId"] || kwArgs["checkString"] || state["jsonp"]) {
			this._state[id] = state;
		}
		if (kwArgs["checkString"]) {
			state.checkString = kwArgs["checkString"];
		}
		state.constantParams = (kwArgs["constantParams"] == null ? "" : kwArgs["constantParams"]);
		if (kwArgs["preventCache"] || (this.preventCache == true && kwArgs["preventCache"] != false)) {
			state.nocacheParam = "dojo.preventCache=" + new Date().valueOf();
		} else {
			state.nocacheParam = "";
		}
		var urlLength = state.url.length + state.query.length + state.constantParams.length + state.nocacheParam.length + this._extraPaddingLength;
		if (kwArgs["useRequestId"]) {
			urlLength += state.idParam.length;
		}
		if (!kwArgs["checkString"] && kwArgs["useRequestId"] && !state["jsonp"] && !kwArgs["forceSingleRequest"] && urlLength > this.maxUrlLength) {
			if (url > this.maxUrlLength) {
				this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"url.tooBig"});
				return;
			} else {
				this._multiAttach(state, 1);
			}
		} else {
			var queryParams = [state.constantParams, state.nocacheParam, state.query];
			if (kwArgs["useRequestId"] && !state["jsonp"]) {
				queryParams.unshift(state.idParam);
			}
			var finalUrl = this._buildUrl(state.url, queryParams);
			state.finalUrl = finalUrl;
			this._attach(state.id, finalUrl);
		}
		this.startWatchingInFlight();
	};