Функция Javascript AJAX не работает в IE? - PullRequest
2 голосов
/ 17 апреля 2009

У меня есть этот код:

function render_message(id)
{
var xmlHttp;
  xmlHttp=new XMLHttpRequest();  
  xmlHttp.onreadystatechange=function()
    {
    if(xmlHttp.readyState==4)
      {
        document.getElementById('message').innerHTML=xmlHttp.responseText;
        document.getElementById('message').style.display='';
        }
    }
    var url="include/javascript/message.php";
    url=url+"?q="+id;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

По какой-то причине он не работает в IE, и в этой строке сообщается об ошибке "document.getElementById ('message'). InnerHTML = xmlHttp.responseText;" с «неизвестной ошибкой во время выполнения».

Может кто-нибудь помочь?

Редактировать: код, добавляемый в div, является действующим кодом и т. Д.

Вот ответ:

<div style="margin-left:auto;margin-right:auto;width:400px;">
    <img src="/forum/img/avatars/2.gif" width="90" height="89" style="float:left;">
    <div style="margin-left:100px;">
        <span style="font-size:16pt;">Sam152</a></span><br>
        <span style="font-size:10pt;text-transform:uppercase;font-weight:bold;">From Sam152</span><br>
        <span style="font-size:10pt;font-weight:bold;">Recieved April 17, 2009, 9:44 am</span><br>
        <br><br>

    </div>
</div>
<div style="margin-left:auto;margin-right:auto;width:400px;">
        asd</div>
<div style="margin-left:auto;margin-right:auto;width:400px;text-align:right;padding-top:10px;">
        <span onClick="requestPage('http://www.gametard.com/include/scripts/delete_message.php?id=14');document.getElementById('message14').style.display='none';document.getElementById('message').style.display='none';" class="button">Delete</span>
        <span onClick="document.getElementById('message').style.display='none';" class="button">Close</span>
        <span onClick="document.getElementById('to').value ='Sam152';document.getElementById('to').style.color ='#000';document.getElementById('newmessage').style.display='';" class="button">Reply</span>     

</div>

Ответы [ 4 ]

5 голосов
/ 17 апреля 2009

Не уверен, что к вам относится следующее, так как вы не упоминаете, какую версию, т. Е. Используете.

работает только в ie7 и выше

var xmlhttp=new XMLHttpRequest();

В Internet Explorer 5 и 6 вы должны использовать

var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
2 голосов
/ 17 апреля 2009

Поверьте мне: используйте фреймворк Ajax.

jQuery или прототип или любой другой.

Не катите свою собственную - вы видите только верхушку кросс-браузерного айсберга с этой проблемой.

Если вы должны сделать это самостоятельно, проверьте xmlHttp.status перед тем, как получить сообщение. Имейте в виду, что IE иногда возвращает коды ошибок Windows вместо статуса HTTP, а более ранняя версия FX выдает исключение, если ошибка является потеря соединения, а не статуса HTTP.

О, и IE6 по-прежнему занимает около 30% веб-рынка и 60% корпоративного, так что совет @Paul Whelan тоже стоит проверить.

2 голосов
/ 17 апреля 2009

Ваш вопрос.

По сути, вы пытаетесь добавить HTML, который не имеет смысла в контексте, когда вы его добавляете. Добавление li там, где нет ul, или строк, где нет таблицы, может вызвать подобные вещи.

1 голос
/ 17 апреля 2009

Вы можете получить эту ошибку, если результат будет недействительным HTML - например, <a><a>foo</a></a> или <a><p>foo</p></a>.

Не видя больше кода (что это за элемент "message" и что такое responseText), трудно сказать больше.

Ваш код недействителен:

<span style="font-size:16pt;">Sam152</a></span>
                                    ^^^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...