Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ajax, Ok под IE,не работает под FF, Opera 
:(
    Опции темы
Boing747
Дата 5.12.2007, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 19.2.2007

Репутация: нет
Всего: 2



Все нормально работает под 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>



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0758 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.