IE проблема с манипулированием DOM - PullRequest
1 голос
/ 10 февраля 2011

У меня есть форма AJAX, и я использую эту строку при получении ответа:

document.getElementById("output").innerHTML = xmlhttp.responseText;

Вывод - div, и в IE я получаю неизвестную ошибку JavaScript.

Будет ли это содержимое, передаваемое из AJAX, вызывать эту ошибку, или синтаксически что-то не так с этой строкой?

EDIT:

if(valid==true){
  //AJAX
  if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
  }else{// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

  xmlhttp.onreadystatechange=function()
  {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
          document.getElementById("output").innerHTML = xmlhttp.responseText;
          id = document.getElementById("parentID").value;
      }
  }
  var parameters = "shedloadofvariables"+shedloadofVariables;

  xmlhttp.open("POST", "register.php", true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlhttp.send(parameters);
  }
else{
  alert("Please Fill in All Fields");   
}

Приветствия

Ответы [ 3 ]

3 голосов
/ 10 февраля 2011

Вывод - это div, и в IE я получаю неизвестную ошибку JavaScript.

«Неизвестная ошибка времени выполнения» обычно возникает при установке недопустимого HTML черезinnerHTML собственность.Не весь недействительный HTML вызовет эту проблему - в общем случае попытка вставить элемент блока в элемент, который не допускает элементы блока, например <div> внутри <p>.Только IE выплевывает это сообщение об ошибке, другие браузеры сделают все возможное, чтобы восстановить ваш дрянной HTML.

Первое, что нужно сделать, это проверить HTML с помощью W3C validator .Для получения дополнительной информации, посмотрите на http://blog.rakeshpai.me/2007/02/ies-unknown-runtime-error-when-using.html.

2 голосов
/ 08 июля 2011

Вы можете попробовать использовать jquery $('#output').html(xmlhttp.responseText);

1 голос
/ 10 февраля 2011

Я до сих пор не до конца понимаю проблему (ответ Энди Э, безусловно, помогает).

Я нашел решение этой проблемы:

var t = document.createElement('div');
t.innerHTML = xmlhttp.responseText;
document.getElementById("output").appendChild(t);

Безупречный.

Не знаю почему, но я не собираюсь подвергать это сомнению, потому что это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...