Ie & Ajax

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем HOYIPSA, 15 апр 2009.

Статус темы:
Закрыта.
  1. HOYIPSA

    HOYIPSA Гость

    проблема в следующем:
    при запуске my.html в ИЕ6, ИЕ7 и ИЕ8(бета версия) выскакивает alert с таким сообщением : [object Error].
    не могу понять в чем проблема
    очень надо, плз хэлп
    ниже я привел скрипты


    в Опере(9.62) и Мозилле(3.0.1) - всё работает нормально



    my.html
    HTML:
    <html>
    <body>
    <script type='text/javascript' src='http://localhost/redactor/my.js'></script>
    <span id='span' onclick="ajax()">спаннннн</span>
    <div id='div'>дивдвдв</div>
    </body>
    </html>
    my.js
    [JS]
    var xmlHttpObject=createXmlHttpRequestObject();
    /********************************************************************************
    ************************************/
    function createXmlHttpRequestObject()
    {
    var xmlHttp;
    try
    {
    xmlHttp=new XMLHttpRequest();
    }
    catch(e)
    {
    var XmlHttpVersions=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<XmlHttpVersions.length && !xmlHttp;i++)
    {
    try
    {
    xmlHttp=new ActiveXObject(XmlHttpVersions);
    }
    catch(e){}
    }
    }
    if(!xmlHttp)
    {
    alert("Error: object XMLHttpRequest");
    }
    else
    {
    return xmlHttp;
    }
    }
    /********************************************************************************
    ************************************/
    function ajax()
    {
    if(xmlHttpObject)
    {
    try
    {
    if((xmlHttpObject.readyState==4) || (xmlHttpObject.readyState==0))
    {
    xmlHttpObject.open("GET","http://localhost/redactor/my.php?option=changeImgDescriptionGallery&nameImg=56_80_small.jpeg",true);
    xmlHttpObject.onreadystatechange=handleResultChangeDescription;
    xmlHttpObject.send(null);
    }
    }
    catch(e)
    {
    alert("Error: connection with server \n"+e.toString);
    }
    }
    }
    /********************************************************************************
    ************************************/
    function handleResultChangeDescription()
    {
    if(xmlHttpObject.readyState==4)
    {
    if(xmlHttpObject.status==200)
    {
    try
    {
    response=xmlHttpObject.responseXML.documentElement;
    var imgName='';
    var imgDescription='';
    imgName=response.getElementsByTagName("nameImgGallery").item(0).firstChild.data;
    imgDescription=response.getElementsByTagName("descriptionImgGallery").item(0).firstChild.data;
    document.getElementById('div').innerHTML="<center><input size='12' type='text' id='"+imgName+"Description' value='"+(imgDescription=='falseHoy' ? '' : imgDescription )+"'><br><span class='alink' onclick='saveDescriptionGallery(\""+imgName+"\")'>save</span><span class='alink' onclick='cancelSaveDescription(\""+imgName+"\")'>cancel</span></center>";
    }
    catch(e)
    {
    alert(e.toString());
    }
    }
    else
    {
    alert("Connection problem; \n"+xmlHttpObject.statusText);
    }
    }
    }
    [/JS]

    my.php
    PHP:

    <?php
    if($_POST['option']=='changeImgDescriptionGallery' || $_GET['option']=='changeImgDescriptionGallery' )
    {
    if(ob_get_length()) ob_clean();
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: '.gmdate('D, d H Y H:i:s').'GMT');
    header('Cash-Control: no-cashe, must-revalidate');
    header('Pragma: no-cashe');
    header("Content-type: text/xml; charset=windows-1251");
    $response="<response><descriptionImgGallery>фывфывфыв</descriptionImgGallery><nameImgGallery>фывфывфывфыввввввв</nameImgGallery></response>";
    echo $response;
    }
    ?>
     
     
  2. Vovochka

    Vovochka Гость

    Скорее всего ошибка возникает при попытке разбора XML,так как XML вы отдаете неверный, без <?xml ... строчки.
    Замените alert(e.toString()); на alert(e.toString() + "ывавыа"); чтоб убедиться, что ошибка происходит при обработке ответа от сервера.
     
  3. HOYIPSA

    HOYIPSA Гость

    вы правы , ошибка происходит при разборе XML-файла

    когда я сделал alert(response) то получил NULL

    эксплорер не хочет работать с русским респонсом

    перебробовал все что можна и решил проблему таким способом(изменил только файл my.php)

    <?php

    function is_ie($name)
    {
    /*проверяю броузер*/
    $is_ie = strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? true : false;
    if($is_ie == false)
    {
    return $name;
    }
    else
    {
    $check = iconv('windows-1251','utf-8',$name);
    return $check;
    }
    }


    if($_POST['option']=='changeImgDescriptionGallery' || $_GET['option']=='changeImgDescriptionGallery' )
    {
    if(ob_get_length()) ob_clean();
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: '.gmdate('D, d H Y H:i:s').'GMT');
    header('Cache-Control: no-caсhe, must-revalidate');
    header('Pragma: no-cache');
    header("Content-type: text/xml; charset=windows-1251");
    $response="<response><descriptionImgGallery>".is_ie('фывфывфыв')."</descriptionImgGallery><nameImgGallery>".is_ie('фывфывфывфыввввввв')."</nameImgGallery></response>";
    echo $response;
    }
    ?>

    лучше ниче не придумал
     
  4. Vovochka

    Vovochka Гость

    Хреново придумал.
    Ты отдаешь текст в utf8 указывая, что он вообще cp1251.
    + Опять такие не выдаешь XML заголовок.
     
  5. etc

    etc Гость

    responseText.
     
  6. Vovochka

    Vovochka Гость

    responseXML - Получаешь DOM к xml, если был получен валидный XML. Так что вполне верно.
     
  7. etc

    etc Гость

    Нет гарантии его существования, в отличие от responseText.
     
  8. Vovochka

    Vovochka Гость

  9. etc

    etc Гость

    Значит я туплю.
     
Загрузка...
Похожие Темы - Ajax
  1. aameno2
    Ответов:
    1
    Просмотров:
    487
  2. solomonec
    Ответов:
    1
    Просмотров:
    1.423
  3. Сергей74
    Ответов:
    1
    Просмотров:
    1.040
  4. АВаТаРчег
    Ответов:
    1
    Просмотров:
    1.044
  5. obnal24
    Ответов:
    0
    Просмотров:
    889
Статус темы:
Закрыта.

Поделиться этой страницей