// jsr_class.js // // JSONscriptRequest -- a simple class for making HTTP requests // using dynamically generated script tags and JSON // // Author: Jason Levitt // Date: December 7th, 2005 // // A SECURITY WARNING FROM DOUGLAS CROCKFORD: // "The dynamic // // function callbackfunc(jsonData) { // alert('Latitude = ' + jsonData.ResultSet.Result[0].Latitude + // ' Longitude = ' + jsonData.ResultSet.Result[0].Longitude); // aObj.removeScriptTag(); // } // // request = 'http://api.local.yahoo.com/MapsService/V1/geocode?appid=YahooDemo& // output=json&callback=callbackfunc&location=78704'; // aObj = new JSONscriptRequest(request); // aObj.buildScriptTag(); // aObj.addScriptTag(); // // // Constructor -- pass a REST request URL to the constructor // function JSONscriptRequest(fullUrl) { // REST request path this.fullUrl = fullUrl; // Keep IE from caching requests this.noCacheIE = '&noCacheIE=' + (new Date()).getTime(); // Get the DOM location to put the script tag this.headLoc = document.getElementsByTagName("head").item(0); // Generate a unique script tag id this.scriptId = 'JscriptId' + JSONscriptRequest.scriptCounter++; } // Static script ID counter JSONscriptRequest.scriptCounter = 1; // buildScriptTag method // JSONscriptRequest.prototype.buildScriptTag = function () { // Create the script tag this.scriptObj = document.createElement("script"); // Add script object attributes this.scriptObj.setAttribute("type", "text/javascript"); this.scriptObj.setAttribute("charset", "utf-8"); this.scriptObj.setAttribute("src", this.fullUrl + this.noCacheIE); this.scriptObj.setAttribute("id", this.scriptId); } // removeScriptTag method // JSONscriptRequest.prototype.removeScriptTag = function () { // Destroy the script tag this.headLoc.removeChild(this.scriptObj); } // addScriptTag method // JSONscriptRequest.prototype.addScriptTag = function () { // Create the script tag this.headLoc.appendChild(this.scriptObj); }