Все нормально работает под IE 7, но не работает под FF и Opera - вываливаюсь по таймауту. Смотрю ActiveXObject и XMLHttpRequest, но тут кажется все нормально. Может есть у кого идеи? Код | <script type="text/javascript">
function XHConn() { var xmlhttp, bComplete = false; /* try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try { xmlhttp = new XMLHttpRequest();} catch (e) {xmlhttp = false;}}} */ if (window.XMLHttpRequest) { try { xmlhttp = new XMLHttpRequest(); if (xmlhttp.overrideMimeType) { xmlhttp.overrideMimeType('text/html'); } } catch (e){} } else if (window.ActiveXObject) { try { xmlhttp = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e){} try { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e){xmlhttp = false; } }
if (!xmlhttp) return null; this.abort = function() { xmlhttp.abort(); } this.connect = function(sURL, sMethod, sVars, fnDone) { if (!xmlhttp) return false; bComplete = false; sMethod = sMethod.toUpperCase();
try { if (sMethod == "GET") { alert(sURL+"?"+sVars); xmlhttp.open(sMethod, sURL+"?"+sVars, true); sVars = ""; } else { xmlhttp.open(sMethod, sURL, true); xmlhttp.setRequestHeader("Method", "POST " + sURL + " HTTP/1.1"); xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlhttp.setRequestHeader("Content-length", sVars.length); xmlhttp.send(sVars); } xmlhttp.onreadystatechange = function(){ if (xmlhttp.readyState == 4 && !bComplete) { bComplete = true; fnDone(xmlhttp); }}; xmlhttp.send(sVars); } catch(z) { return false; } return true; }; return this; } </script>
|
Код | <script> var url = "any URL"; var checking = "Checking train status..."; var requestObj = null; var FAILURE_STRING = "Unable to connect to server."; var TIMEOUT_STRING = "Request Timed out."; var LAST_KNOWN = "Last Known:"; var ERR_HIGHLIGHT_OPEN = "<b>"; var ERR_HIGHLIGHT_CLOSE = "</b>"; var LINE_BREAK = "<br>"; var currentStatus = FAILURE_STRING; var responseTimer; function ClearRequestObj() { if(requestObj != null) { requestObj.abort(); requestObj = null; } } function CreateNewResponseObj() { ClearRequestObj(); requestObj = new XHConn(); } function RefreshStatus(oXml) { clearTimeout(responseTimer); if(oXml.status == 200) { currentStatus = oXml.responseText; document.getElementById('trainStatus').innerHTML = currentStatus; } else { ErrorMessage(FAILURE_STRING); } ClearRequestObj(); } function CancelRequest() { ClearRequestObj(); ErrorMessage(TIMEOUT_STRING); clearTimeout(responseTimer); } function ErrorMessage(errString) { errString = ERR_HIGHLIGHT_OPEN + errString + ERR_HIGHLIGHT_CLOSE; if(currentStatus != FAILURE_STRING & currentStatus != TIMEOUT_STRING) errString += " " + LAST_KNOWN + LINE_BREAK + currentStatus; document.getElementById('trainStatus').innerHTML = errString; } function CancelRequest() { ClearRequestObj(); ErrorMessage(TIMEOUT_STRING); clearTimeout(responseTimer); } function Check() { var origin = document.getElementById('origin').value; var destination = document.getElementById('destination').value; var trainNumber = document.getElementById('trainNumber').value; var year = document.getElementById('year').value; var month = document.getElementById('month').value; var day = document.getElementById('day').value; var date = year + "-" + month + "-" + day; var cultureInfo = "en-US"; var params = "trainNumber=" + trainNumber + "&origin=" + origin + "&destination=" + destination + "&date=" + date + "&cultureInfo=" + cultureInfo; document.getElementById('trainStatus').innerHTML = checking; responseTimer = setTimeout("CancelRequest()", 30000); CreateNewResponseObj(); requestObj.connect(url, 'GET', params, RefreshStatus); } </script>
|
|