За последние 24 часа нас посетили 17403 программиста и 1286 роботов. Сейчас ищут 1633 программиста ...

IE6 и Ajax

Тема в разделе "JavaScript и AJAX", создана пользователем Ximik, 13 мар 2007.

  1. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    [js]naberlin_div = document.getElementById('naberlin');
    function loadNaberlin(){
    params = 'adnum='+nb_numads+'&pgid='+nb_pageid+ '&gid='+nb_gids+'&nb_br='+nb_br+'&nb_bg=' +nb_bg+'&nb_hd='+nb_hd+'&nb_tx='+nb_tx+'&nb_ur='+nb_ur+'&keys='+nb_keys+'&encode='+encode;
    if (window.XMLHttpRequest){
    req = new XMLHttpRequest();
    req.onreadystatechange = NaberlinProcessReqChange;
    req.open('POST', 'http://naberlin.ru/_7/out.php', true);
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    req.send(params);
    }else if (window.ActiveXObject){
    req = new ActiveXObject("Msxml2.XMLHTTP");
    if (req){
    req.onreadystatechange = NaberlinProcessReqChange;
    req.open('POST', 'http://naberlin.ru/_7/out.php', true);
    req.send(params);
    }else{
    req = new ActiveXObject("Microsoft.XMLHTTP");
    req.onreadystatechange = NaberlinProcessReqChange;
    req.open('POST', 'http://naberlin.ru/_7/out.php', true);
    req.send(params);
    }
    }
    }
    function NaberlinProcessReqChange(){
    if (req.readyState == 4) {
    if (req.status == 200) {
    //response = req.responseXML.documentElement;
    // final=req.responseXML.getElementsByTagName('STYLE')[0].firstChild.data;
    // document.write(final);
    // final=req.responseXML.getElementsByTagName('RESPONSE')[0].firstChild.data;
    // naberlin_div.innerHTML = final;
    alert(req.responseText);
    }else{
    loadNaberlin();
    }
    }
    }
    loadNaberlin();
    [/js]
    Я повешусь. Работает везде, кроме IE6. Что делать?
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а что именно не работает?
     
  3. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    IE выдает просто пустое окно, вместо с того, что ему передал сервер
     
  4. Anonymous

    Anonymous Guest

    Ximik, есть предложение не изобретать велосипед.
    А заюзать это.
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    +1
     
  6. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    Не катит. Нужно именно этот скрипт исправить.
     
  7. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Ximik
    попробуй еще через ActiveXObject("Msxml2.XMLHTTP.4.0").
     
  8. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Ну, люди, ну что же вы... Человек решил сам покопаться, а вы его по рукам бьете.
    Ximik, учись делать отладку.
    У тебя несколько этапов: создание объекта, формирование запроса, отлавливание прихода ответа, разбор ответа. Определи на каком этапе происходит облом.
     
  9. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    [js] req = new ActiveXObject("Msxml2.XMLHTTP");
    if (req){
    ...
    }else{
    req = new ActiveXObject("Microsoft.XMLHTTP");[/js]
    Вот нельзя так делать, если req = new ActiveXObject("Msxml2.XMLHTTP") не сработает, то все вывалится с ошибкой. Нужно делать через try-catch
     
  10. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    [js]function loadNaberlin(){
    req=false;
    try { // определить метод поддержки
    req=new ActiveXObject('Msxml2.XMLHTTP');
    }catch (e){
    try {
    req=new ActiveXObject('Microsoft.XMLHTTP'); // сработает в Internet Explorer
    }catch(e){
    if(window.XMLHttpRequest){ // сработает в Mozilla и Safari
    req=new XMLHttpRequest();
    }
    }
    }
    if (req){// если какой-то из вариантов поддерживается
    req.onreadystatechange = NaberlinProcessReqChange; // назначим обработчик событию объекта
    req.open('POST', 'http://naberlin.ru/_7/out.php', true); // задать параметры методу open
    req.send('adnum='+nb_numads+'&pgid='+nb_pageid+'&gid='+nb_gids+'&nb_br='+nb_br+'&nb_bg='+nb_bg+'&nb_hd='+nb_hd+'&nb_tx='+nb_tx+'&nb_ur='+nb_ur+'&keys='+nb_keys+'&encode='+encode);
    }
    }
    [/js]

    Так? Тоже не пашет :(
     
  11. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    ActiveX вообще включен?
     
  12. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    Конечно
     
  13. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    [js]
    try {
    var req = new ActiveXObject( "Msxml2.XMLHTTP" );
    } catch( e ) {
    try {
    var req = new ActiveXObject('Microsoft.XMLHTTP');
    } catch( e ) {
    alert( "Нифига!" );
    }
    }
    alert( req );
    [/js]
    У меня срабатывает в IE6 (выскакивает алерт с [object]). Если не работает попробуй, как сказал simpson
     
  14. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    [js]naberlin_div = document.getElementById('naberlin');
    function loadNaberlin(){
    req=false;
    try { // определить метод поддержки
    req=new ActiveXObject('Msxml2.XMLHTTP');
    }catch (e){
    try {
    req=new ActiveXObject('Microsoft.XMLHTTP'); // сработает в Internet Explorer
    }catch(e){
    if(window.XMLHttpRequest){ // сработает в Mozilla и Safari
    req=new XMLHttpRequest();
    }
    }
    }
    if (req){// если какой-то из вариантов поддерживается
    req.onreadystatechange = NaberlinProcessReqChange; // назначим обработчик событию объекта
    req.open('POST', 'http://naberlin.ru/_7/out.php', true); // задать параметры методу open
    req.send('adnum='+nb_numads+'&pgid='+nb_pageid+'&gid='+nb_gids+'&nb_br='+nb_br+'&nb_bg='+nb_bg+'&nb_hd='+nb_hd+'&nb_tx='+nb_tx+'&nb_ur='+nb_ur+'&keys='+nb_keys+'&encode='+encode);
    }
    }
    function NaberlinProcessReqChange(){
    if (req.readyState == 4) {
    if (req.status == 200) {
    // response = req.responseXML.documentElement;
    // final=req.responseXML.getElementsByTagName('STYLE')[0].firstChild.data;
    // document.write(final);
    // final=req.responseXML.getElementsByTagName('RESPONSE')[0].firstChild.data;
    // naberlin_div.innerHTML = final;
    naberlin_div.innerHTML = req.responseText;
    }else{
    loadNaberlin();
    }
    }
    }
    loadNaberlin();[/js]

    Выводятся тупо знаки вопросиков. Изменение кодировки не помогает. Во всех браузерах.
     
  15. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Спокойно, т.е. объект таки создался?
    Что за кодировка и на какие пробовал менять? Где менял, на сервере или на клиенте?
     
  16. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    Менял и там, и там. Нифига. Пробовал и cp1251 и UTF8. :(