Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Ajax. Нормально работает только в ИЕ


Автор: R.M. 4.12.2006, 00:42
Есть такой JS

Код

function createRequestObject() {
  if (window.XMLHttpRequest) return new XMLHttpRequest();
  try {
    return new ActiveXObject('Msxml2.XMLHTTP');
  } catch(e) {
    return new ActiveXObject('Microsoft.XMLHTTP');
  }
}

function ReLoad(file) {
url = 'getfile.php';
data = "fileid="+encodeURIComponent(file);
 var Req = createRequestObject();
 
 Req.onreadystatechange = function(){if(Req.readyState==4&&Req.status==200) { document.getElementById('fortext').innerHTML=Req.responseText; }};
 Req.open('POST',url,true);
 Req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 Req.send(data);
}


Но почему то в Опере не работает совсем а в ФФ работает через раз как-то, но если ставлю в начало функции ReLoad скажем alert() то в ФФ всё работает замечательно. Дело в том что запускается она по onclick в теге <a>, как я понял ФФ плохо понимает что сначала надо делать запускать JS или переходить по ссылке а вот с оперой совсем не понял. Подскажите пожалуйста.

Добавлено @ 00:43 
P.S. никаких алертов естественно там нельзя делать я просто для теста так делал.

Автор: Aliance 4.12.2006, 02:22
Цитата

function createRequestObject() {
  if (window.XMLHttpRequest) return new XMLHttpRequest();
  try {
    return new ActiveXObject('Msxml2.XMLHTTP');
  } catch(e) {
    return new ActiveXObject('Microsoft.XMLHTTP');
  }
}

Вот здесь ошибка, ActiveX есть только в ИЕ. Пользуйся поиском, много рах писался код правильного инициализирования Аякса.

Автор: R.M. 4.12.2006, 02:47
Aliance, спасибо понял, в этот раз упустил этот момент smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)