/** * AsyncRequest is for sending asynchronous GET and POST requests to the * web server. This is for *non* 'AJAX' and JSON calls (i.e. the response sent back * from the server is not XML). Also, it is recommended that JSON be used * in lieu of Ajax since it is easier to work with. JSON calls can be received * here as well. See http://www.json.org. * * This file depends on coreweb/common/browser.js. So you must include browser.js if * you want to make asyncRequest calls. * */ questia.asyncRequest = new Object(); questia.asyncRequest.get = function(url, callBack) { questia.asyncRequest.invoke( url, null, callBack, false ); } questia.asyncRequest.post = function(url, parameters, callBack) { questia.asyncRequest.invoke( url, parameters, callBack, true ); } questia.asyncRequest.invoke = function(url, parameters, callBack, bPost) { var browser = coreweb.common.Browser; var req = false; // branch for native XMLHttpRequest object if(window.XMLHttpRequest) { try { req = new XMLHttpRequest(); } catch(e) { req = false; } // branch for IE/Windows ActiveX version } else if(window.ActiveXObject) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { req = false; } } } if(req) { req.onreadystatechange = function() { if (req.readyState == 4) { if (req.status == 200) { if ( callBack != null ) { callBack( req.responseText ); } } else { if ( browser.isBrowser("safari") ) { if ( 'undefined' != reg.status ) { alert("There was a problem with your request: " + req.statusText + " code: " + req.status ); } } else { alert("There was a problem with your request: " + req.statusText + " code: " + req.status ); } } } } /** * add timestamp to url to fix IE caching issues. */ var date = new Date(); var timestamp = date.getTime(); if ( bPost ) { req.open( "POST", url, true ); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); if ( parameters == null ) { parameters = "time=" + timestamp; } else { parameters += "&time=" + timestamp; } req.setRequestHeader("Content-length", parameters.length); req.setRequestHeader("Connection", "close"); // work around for safari 'undefined' bug if ( browser.isBrowser("safari") ) { req.setRequestHeader( "If-Modified-Since", "Sun, 01 Jan 1990 00:00:00 GMT"); } req.send(parameters); } else { if ( url.indexOf( '?' ) > 0 ) { url += "&time=" + timestamp; } else { url += "?time=" + timestamp; } req.open("GET", url, true); // work around for safari 'undefined' bug if ( browser.isBrowser("safari") ) { req.setRequestHeader( "If-Modified-Since", "Sun, 01 Jan 1990 00:00:00 GMT"); } req.send(null); } } }