Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ajax и IE

347
26 июля 2009 года
Maniak
319 / / 05.11.2005
Товарищи подскажите пжалста почему Opera нормально выполняет код, а IE выдает вообще какуюто системную ошибку?
Код:
var request;
function createRequest() {
  try {
    request = new XMLHttpRequest();
  } catch (trymicrosoft) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (othermicrosoft) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) {
        request = false;
      }
    }
  }
  if (!request)
    alert("Error initializing XMLHttpRequest!");
}

function updatePage(){
if (request.readyState == 4) {
    if (request.status == 200){
        var response=request.responseText;
        div_=document.getElementById("T_and_scr");
        div_.innerHTML=response;
        div_.style.display="block";
    }else{
        alert("status is " + request.status);
    }
}
}
function GetTab(){
createRequest();

var url = "ALCajax.php";
request.open("GET", url, true);
request.onreadystatechange = updatePage;
request.send(null);
}

....блин опера тоже вроде глючит - при изменении скрипта ALCajax.php - новые данные появляются спустя какоето время...
...а также русские буквы приходят какимто убожеством :(
353
27 июля 2009 года
Nixus
840 / / 04.01.2007
Ваш код верен, за исключением:
 
Код:
[COLOR="Red"]var[/COLOR] div_=document.getElementById("T_and_scr");
347
27 июля 2009 года
Maniak
319 / / 05.11.2005
когда коментишь строку:
 
Код:
...
request.send(null);
...

ошибка в эксплорере исчезает.... но соответственно ничего и не посылается:(
312
27 июля 2009 года
dead_star
392 / / 26.11.2006
для инициализации ajax объекта могу порекомендовать более расширенный вариант
Код:
var request = null;
function createRequest(){
  if (request) return;
  try {
   request = new XMLHttpRequest();
  } catch(e){
   var versions = new Array(
    'MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0',
    'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0',
    'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'
   );
   for (var i=0; i<versions.length && !this.request; i++){
    try {
     request = new ActiveXObject(versions);
    } catch(e){}
   }
  }
  if (!request) alert("Error initializing XMLHttpRequest!");
}

а в остальном не вижу причин, по которым код не должен работать
Цитата: Maniak
...а также русские буквы приходят какимто убожеством :(


данные для ajax в оби стороны проходят в кодировке utf-8

353
27 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: dead_star
данные для ajax в оби стороны проходят в кодировке utf-8


Не пишите глупостей. XMLHttpRequest не привязан к какой-либо кодировке.

353
27 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: Maniak
ошибка в эксплорере исчезает.... но соответственно ничего и не посылается:(


Версия IE какая? Что есть на странице помимо кода, приведенного выше?

347
27 июля 2009 года
Maniak
319 / / 05.11.2005
версия IE - 6...
ругается непосредственно на строку:
 
Код:
...
var response=request.responseText;
...

счас попробую код dead_star

кода там не оч много: сессии, бд... JS больше никакова
347
27 июля 2009 года
Maniak
319 / / 05.11.2005
...теперь указывает на ту же строку но пишет:
 
Код:
Указанная кодировка не поддерживается.
312
27 июля 2009 года
dead_star
392 / / 26.11.2006
Цитата: Nixus
Не пишите глупостей. XMLHttpRequest не привязан к какой-либо кодировке.


у меня нет под боком маня по ajax поэтому я лишь предполагаю
я точно помню, что последний раз, когда я делал приложения с ajax-ом, я отправлял данные в cp1251, а на сервер они приходили в utf-8
хотя возможно причина в том, что я использовал библиотеку prototype

353
27 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: dead_star
у меня нет под боком маня по ajax поэтому я лишь предполагаю


Зачем предполагать, если не знаешь?
Если сериализуешь форму, то без широкого напильника у тебя получиться отправить данные только в utf-8. Но это проблема сериализации формы и прочего кодирования, а не отправки на сервер посредством XMLHttpRequest. А уж с сервера получаются данные в любой кодировке.

312
27 июля 2009 года
dead_star
392 / / 26.11.2006
Цитата: Maniak
...теперь указывает на ту же строку но пишет:


кстати у меня ошибка в коде. забыл this убрать
если не урать то он устанавливает самую старую версию тоесть Microsoft.XMLHTTP
может быть в этом ошибка

 
Код:
for (var i=0; i<versions.length && ![COLOR="Red"]this.[/COLOR]request; i++){

Цитата: Nixus
Зачем предполагать, если не знаешь?
Если сериализуешь форму, то без широкого напильника у тебя получиться отправить данные только в utf-8. Но это проблема сериализации формы и прочего кодирования, а не отправки на сервер посредством XMLHttpRequest. А уж с сервера получаются данные в любой кодировке.


без комментариев

347
27 июля 2009 года
Maniak
319 / / 05.11.2005
а есть кокойнибудь способ средствами JS поменять кодировку request.responseText?
353
27 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: Maniak
а есть кокойнибудь способ средствами JS поменять кодировку request.responseText?


Поставьте в начало ALCajax.php

 
Код:
<?php
    header( 'Content-Type: text/html; charset=windows-1251' );
?>
347
27 июля 2009 года
Maniak
319 / / 05.11.2005
.........все резко заработало......нет слофф
347
27 июля 2009 года
Maniak
319 / / 05.11.2005
еще один вопросик....
почему когда изменяешь код скрипта к которому происходит ajax запрос (ALCajax.php) изменения на главной странице не вступают в силу? т.е. какоето время идет старый ответ request.responseText.... что где то соединение не рвется или что?
все нормально становиться только после перезапуска браузера.
353
27 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: Maniak
еще один вопросик....
почему когда изменяешь код скрипта к которому происходит ajax запрос (ALCajax.php) изменения на главной странице не вступают в силу? т.е. какоето время идет старый ответ request.responseText.... что где то соединение не рвется или что?
все нормально становиться только после перезапуска браузера.


Проблема в кэшировании.
http://xmlhttprequest.ru/#problem

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог