Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.04.2012, 19:02
Новичок на форуме
Отправить личное сообщение для Alepri Посмотреть профиль Найти все сообщения от Alepri
 
Регистрация: 25.04.2012
Сообщений: 3

Не работает XMLHttpRequest (status) в Explorer и Opera
Привет всем.
У меня возникла проблема c таким скриптом:

function getXmlHttp(){
  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;
}

function getMsg() {
    var req = getXmlHttp()
    req.open('GET', 'http://example.com', true)
    req.onreadystatechange = function() {
    if (req.readyState == 4) {
    if (req.status == 204) {
    document.getElementById('mydiv').appendChild(document.createTextNode("my-message_1"));
   }
    if (req.status == 200) {
    document.getElementById('mydiv').appendChild(document.createTextNode("my-message_2"));
   }
  }
}
req.send(null)
}


Во всех браузерах работает отлично а вот в Explorer и Opera не хочет работать и всё.
Я так понимаю, в этих браузерах не читается if (req.status == ???)

Помогите, если кто знает решение такой проблемы.
Ответить с цитированием
  #2 (permalink)  
Старый 25.04.2012, 23:34
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

У меня все работает:
<div id="mydiv"></div>
<script type="text/javascript">
function getMsg() {

    var req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");

    req.open( 'GET', 'http://lookatcode.com/showjs', true );

    req.onreadystatechange = function() {
        if (req.readyState == 4) {
            if (req.status == 204) {
                document.getElementById('mydiv').appendChild(document.createTextNode("my-message_1"));
            }
            if (req.status == 200) {
                document.getElementById('mydiv').appendChild(document.createTextNode("my-message_2"));
            }
        }
    }

    req.send(null)
}

getMsg();
</script>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 26.04.2012, 17:08
Новичок на форуме
Отправить личное сообщение для Alepri Посмотреть профиль Найти все сообщения от Alepri
 
Регистрация: 25.04.2012
Сообщений: 3

Спасибо.
Этот скрипт работает лучше
При запросе на сторонний домен Explorer выдаёт ошибку отказа в доступе а Opera вообще ничего не показывает.
Тут по видимости как-то запрос Аяксом с сервера делается а как такую фитчу прикрутить к PHP не знаю.

Адрес URL пользователем вводится через форму, в случае существования картинки (200) -
oтображает картинку, в другом случае (204) - моё сообщение.

Может есть и проще варианты чем XMLHttpRequest… Если кто встречался с подобным или знает похожий код подскажите пожалуйста
Ответить с цитированием
  #4 (permalink)  
Старый 26.04.2012, 19:28
Новичок на форуме
Отправить личное сообщение для Alepri Посмотреть профиль Найти все сообщения от Alepri
 
Регистрация: 25.04.2012
Сообщений: 3

Вобщем у меня лучше получилось без XMLHttpRequest
Вот код нашёл, который выдаёт ошибку, в случае если нет параметров картинки (может кому понадобится)…

function loadImage(src) {
    var image = new Image;
    image.onload = function() {
        if ('naturalHeight' in this) {
            if (this.naturalHeight + this.naturalWidth === 0) {
                this.onerror();
                return;
            }
        } else if (this.width + this.height == 0) {
            this.onerror();
            return;
        }
        // At this point, there's no error.
        document.body.appendChild(image);
    };
    image.onerror = function() {
        //display error
        document.body.appendChild(
            document.createTextNode('\nError loading as image: ' + this.src)
        );
    };
    image.src = src;
}

Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с XMLHttpRequest не работает в опере. phpguru AJAX и COMET 7 03.04.2012 22:52
Скрипт перестал работать в новых версиях firefox, Opera и Chrome, а в IE работает polbear Javascript под браузер 3 30.06.2011 09:34
XHR && HTTP 403 status code && Opera Ex_Soft Opera, Safari и др. 9 05.01.2011 16:44
скрипт работает в IE не работает в Opera!!! Ikram Opera, Safari и др. 3 29.10.2010 10:04
XMLHttpRequest не работает lgv Firefox/Mozilla 0 14.04.2010 17:07