Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.09.2012, 23:57
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

Проблема с AJAX
Перечитал очень много литературы по AJAX и не могу его понять - не срабатывают примеры, поэтому недоходит до меня, вот сам HTML:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
function Ajax () {
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}
var ajax = Ajax();
ajax.open("GET", "test.xml", true);
ajax.onreadystatechange = function() {
 if (ajax.readyState == 4) {
  alert("");//срабатывает
  alert(ajax.status);//всегда 0
  if(ajax.status == 200) {
   alert("");//не срабатывает
  }
 }
};
ajax.send(null);
</script>
</body>
</html>

В чем ошибка в коде (консолька у меня молчит) или это особенности работы AJAX с локалкой ?
Ответить с цитированием
  #2 (permalink)  
Старый 16.09.2012, 01:15
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Dim@ Посмотреть сообщение
function Ajax () {
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}
Давно пора забыть уже про этот способ.

Достаточно делать так:
var ajax = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
ajax.open("GET", "test.xml", true);
ajax.onreadystatechange = function() {
    if ( ajax.readyState == 4 ) {
        var status = ( ajax.status === 1223 ) ? 204 :
            ( ajax.status === 0 && ( self.location || {} ).protocol == 'file:' ) ? 200 : ajax.status;

        if ( status >= 200 && status < 300 || status === 304 ) {
            alert( ajax.responseText ); // срабатывает
        }
    }
};
ajax.send( null );
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 16.09.2012, 10:05
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

devote,
хм, спасибо, правда не понимаю этого
ajax.onreadystatechange = function() {
    if ( ajax.readyState == 4 ) {
        var status = ( ajax.status === 1223 ) ? 204 :
            ( ajax.status === 0 && ( self.location || {} ).protocol == 'file:' ) ? 200 : ajax.status;
 
        if ( status >= 200 && status < 300 || status === 304 ) {
Ответить с цитированием
  #4 (permalink)  
Старый 16.09.2012, 20:19
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Dim@
правда не понимаю этого
а что там не понятного? Я не помню какой браузер, но какой то из них выдает статус 0 если скрипт запускать по протоколу file
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 16.09.2012, 22:52
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

devote,
видно FF
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax $.post вместо json проблема данные не приходят Sadist_dead AJAX и COMET 2 12.07.2012 17:59
ajax чат проблема с записью сообщения в базу данных mysql. Niksik AJAX и COMET 4 15.01.2012 14:04
ajax уведомления (проблема) okapo AJAX и COMET 7 04.11.2011 10:56
Проблема с событиями после ajax запроса Mirgorod AJAX и COMET 5 12.06.2010 18:24
Проблема с Ajax запросом в IE и Opera flash_uz AJAX и COMET 0 30.04.2009 15:08