За последние 24 часа нас посетил 16841 программист и 1647 роботов. Сейчас ищут 1093 программиста ...

ошибка [object Error], только в IE

Тема в разделе "JavaScript и AJAX", создана пользователем hellhammer, 18 июл 2008.

  1. hellhammer

    hellhammer Активный пользователь

    С нами с:
    2 сен 2007
    Сообщения:
    42
    Симпатии:
    0
    Здравствуйте!
    При выполнении ajax-скрипта в IE (и только в нём) возникает ошибка [object Error].

    Но отсылка заголовка
    header ("Content-Type: text/xml; charset=windows-1251");
    ...проблему не решает.

    Хотя возвращается то, что нужно:
    <?xml version="1.0" ?>
    <response>OK!</response>


    В чём ещё может быть причина?
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    код ajax давайте...
     
  3. hellhammer

    hellhammer Активный пользователь

    С нами с:
    2 сен 2007
    Сообщения:
    42
    Симпатии:
    0
    Код (Text):
    1. var xmlHttp = createXmlHttpRequestObject();
    2.  
    3. function createXmlHttpRequestObject()
    4. {
    5. var xmlHttp;
    6.  
    7. try
    8. {
    9.   xmlHttp = new XMLHttpRequest();
    10. }
    11.  
    12. catch (e)
    13. {
    14.   var XmlHttpVersions = new Array ("MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft XMLHTTP");
    15.   for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
    16.   {
    17.     try
    18.     {
    19.       xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
    20.     }
    21.     catch (e) {}
    22.   }
    23. }
    24.  
    25. if (!xmlHttp) alert ("Ошибка создания объекта XMLHttpRequet.");
    26. else return xmlHttp;
    27. }
    28.  
    29.  
    30. function process(id,dir)
    31. {
    32.  
    33. if (xmlHttp)
    34. {
    35.   try
    36.   {
    37.    
    38.     if (dir==1) //если рекомендуем автора
    39.     {
    40.       var params = "authid=" + id;
    41.       xmlHttp.open("GET", "modules/recomauth.php?" + params, true);
    42.     }
    43.  
    44.     else  //если рекомендуем произведение
    45.     {
    46.       var params = "workid=" + id;
    47.       xmlHttp.open("GET", "modules/recomwork.php?" + params, true);
    48.     }
    49.     xmlHttp.onreadystatechange = handleRequestStateChange;
    50.     xmlHttp.send(null);
    51.   }
    52.  
    53.   catch (e)
    54.   {
    55.     alert ("Невозможно соединиться с сервером:\n" + e.toString());
    56.   }
    57. }
    58. }
    59.  
    60.  
    61. function handleRequestStateChange()
    62. {
    63.  
    64. if(xmlHttp.readyState == 4)
    65. {
    66.   if (xmlHttp.status == 200)
    67.   {
    68.     try
    69.     {
    70.       handleServerResponse();
    71.     }
    72.     catch (e)
    73.     {
    74.       alert ("Ошибка чтения ответа: " + e.toString());
    75.     }
    76.   }
    77.   else
    78.   {
    79.     alert ("Возникли проблемы во время получения данных: \n" + xmlHttp.statusText);
    80.   }
    81. }
    82. }
    83.  
    84.  
    85. function handleServerResponse()
    86. {
    87.  
    88. var xmlResponse = xmlHttp.responseXML;
    89.  
    90. if (!xmlResponse || !xmlResponse.documentElement)
    91. throw ("Invalid XML structure:\n" + xmlHttp.responseText);
    92.  
    93. var rootNodeName = xmlResponse.documentElement.nodeName;
    94.  
    95. if (rootNodeName == "parsererror")
    96. throw ("Invalid XML structure:\n" + xmlHttp.responseText);
    97.  
    98. xmlRoot = xmlResponse.documentElement;
    99.  
    100. if (rootNodeName != "response" || !xmlRoot.firstChild)
    101. throw ("Invalid XML structure:\n" + xmlHttp.responseText);
    102.  
    103. responseText = xmlRoot.firstChild.data;
    104.  
    105. myDiv = document.getElementById("OKDiv1");
    106. myDiv.innerHTML = "<font color=green>" + responseText + "</font>";
    107.  
    108. }
     
  4. hellhammer

    hellhammer Активный пользователь

    С нами с:
    2 сен 2007
    Сообщения:
    42
    Симпатии:
    0
    Неужели никто не сталкивался?..
    Странно - делаю всё по книгам, значит, не у меня одного должно было возникнуть...
     
  5. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    hellhammer
    Если вы делаете всё тупо по книгам, даже не понимая что делает данный скрипт, то у вас никогда ничего не получится.
    Я весь код читать не буду. Где возникает ошибка? Номер строчки?
     
  6. hellhammer

    hellhammer Активный пользователь

    С нами с:
    2 сен 2007
    Сообщения:
    42
    Симпатии:
    0
    Ну откуда ж такие выводы :)

    При вызове handleServerResponse() выполняется исключение, значит, что-то в ней... В какой строчке - не знаю. Собственно, функция-то невелика. Последняя в коде. Я так понимаю, что функция просто структуры объекта не видит.

    Код (Text):
    1. var xmlResponse = xmlHttp.responseXML;
    2.  
    3. if (!xmlResponse || !xmlResponse.documentElement)
    4. throw ("Invalid XML structure:\n" + xmlHttp.responseText);
    5.  
    6. var rootNodeName = xmlResponse.documentElement.nodeName;
    Вот и не знаю - неправильно генерируется xml в php-модуле, или уже здесь при разборе что-то не то...