Лажа с Microsoft.xmlhttp

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем Sel, 13 июл 2007.

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

    Sel Гость

    В общем такая штука. Есть запрос на сервер xmlh=new ActiveXObject('Microsoft.XMLHTTP') в функции, которая через window.setTimeout('relod ()', 7000) периодически вызывается. Функция достаточно большая. А проблема в том, что после некоторого времени таких периодических обращений значение book = xmlh.responseXML начинает давать неверные результаты одного узла, значение которого увеличивается при нажатии некоторой кнопки.
    Если кто-то с таким встречался... посоветуйте чего-нибудь.
     
  2. Sel

    Sel Гость

    Вот решил дополнить свою тему, чтобы не быть голословным приведу код. В общем некоторый узел в XML документе меняется каждые 0,3 секунды некоторым приложением.
    А вот код странички такой

    function aaa ()
    {
    var dt = new Date ();
    if (window.ActiveXObject)
    {
    var xmlh=new ActiveXObject('Microsoft.XMLHTTP');
    xmlh.open('GET','http://localhost/WebSite/obchi.xml?tm='+dt.getSeconds(), false);
    xmlh.send();
    var book = xmlh.responseXML;
    var cc = book.getElementsByTagName("num")[0].text;
    form1.txt1.value = cc;

    }
    window.setTimeout("aaa ()", 4000);
    }


    Так вот. txt1 определён как <input id="txt1" type="text" /> . Сначала значение txt1 соответствует изменению XML документа, но потом начинает писать что попало.
    В чём здесь прикол?
     
  3. Emelya

    Emelya Гость

    Вроде хорошо всё выглядит. А точно , что это не obchi.xml парит?
     
  4. Sel

    Sel Гость

    Точно. XML я открываю вручную и там всё нормально. "Парит" сам responseXML. Я это проверял. То есть писал responseText вот там как раз и видно, что парит ответ с сервера.
     
  5. Emelya

    Emelya Гость

    может здесь
    вместо ...text надо
    Код (Text):
    var cc = book.getElementsByTagName("num")[0].firstChild.data
    , потому что text это для responseText. Попробуй, вроде должно пролезть.
     
  6. Sel

    Sel Гость

    Не пролазит :angry: Здесь можно материться? А то я чувствую, что нужно сбросить пар :) Есть у тебя ещё варианты?
     
  7. Emelya

    Emelya Гость

    вроде низзя, а какую ошибку кидает? или просто в форме не то, что должно быть, появляется?
     
  8. Emelya

    Emelya Гость

    Слушай, я тут подумал :angry: , "один умный вещь скажу, только ты не обижайся"(с)
    Мысль: а если ты другую запись используешь, то всё равно ошибка? Типа:
    Код (Text):
    function aaa ()
    {
    var dt = new Date ();
    try{
    if (window.ActiveXObject)
    {
    xmlh=new ActiveXObject('Microsoft.XMLHTTP');
    xmlh.open('GET','http://localhost/WebSite/obchi.xml?tm='+dt.getSeconds(), true);
    xmlh.onreadystatechange = bbb();
    xmlh.send(null);}
    } catch( e ) {
    alert( "ошибка при подаче;(: " + e );
    }
    }
    Код (Text):
    function bbb(){
    if( 4 == xmlh.readyState ) {
    if( 200 != xmlh.status ) {
    alert( "ошибка при приёме " + xmlh.status + ": " + xmlh.statusText );
    } else {
    var book = xmlh.responseXML;
    if (ergebnis.getElementsByTagName("num")[0]){
    var cc = book.getElementsByTagName("num")[0].firstChild.data;
    form1.txt1.value = cc;
    }
    }
    }
    window.setTimeout("aaa ()", 4000);
    }
    Надеюсь все скобки сходятся:)
    Или другой вариант, в xml сделать атрибут , и потом его с помощью getAttribute считывать, вместо ...text
     
  9. Sel

    Sel Гость

    Асинхронный вызов с параметром true я тоже пробовал. То же самое.
    А ошибку не выдаёт, только значение form1.txt1.value = cc показывает сначало правильно (оно у меня увеличивается на единицу каждые 0,3 секунды), а где-то после 170 начинает или сбрасываться где-то к 10 и заново начинает расти или вообще бред пишет, не соответсвующий вообще значению в XML документе.
    Хоть вешайся. :)
    А на счёт атрибута я попробую, хотя мне уже из принципа интересно, что это за такая фигня.
    МОгу тебе код выслать странички (хотя он у тебя уже есть) и приложение которое изменяет XML документ. Сам попробуешь :D
     
  10. Emelya

    Emelya Гость

    мне тоже интересно:) тока смотря на чём сервер, я с пхп обращаться не умею, тока с asp и jsp могу посмотреть.
     
  11. Sel

    Sel Гость

    Вот и хорошо. Сервер локальный IIS 5.1. Программа, изменяющая XML документ на C#. Так что... куда слать? B)
     
  12. Sel

    Sel Гость

    Ну, спасибо, что поломал со мной голову :D Я разобрался. Остаётся только злиться на себя. Или тупость или невнимательность :) Если что, будешь знать на будущее, проблема в dt.getSeconds(). Нужно getTime (). Секунды-то повторяются через определённое время.
     
  13. Emelya

    Emelya Гость

    Умных ошибок не бывает :D Блин, зато как тему повторили :)
     
Загрузка...
Статус темы:
Закрыта.

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