Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ajax (XMLHttpRequest ) в цикле
 
 автор: neokortex   (28.01.2010 в 16:25)   письмо автору
 
 

Сегодня случилась беда. В космосе испортилась герметичность.. :)

XMLHttpRequest не работает в цикле. Точнее работает не полностью. Выполняется только один (первый) раз и все.



if (r[j].checked == true) {
            var url = "move.php?kakoi=" + r[j].value + "&kuda=" + id;
                request_remove.open("GET", url, true);
            request_remove.send(null);
            };



Помогите пожалуйста решить проблему

  Ответить  
 
 автор: sl1p   (28.01.2010 в 16:59)   письмо автору
 
   для: neokortex   (28.01.2010 в 16:25)
 

потому что вы последующим циклом убиваете прошлый.
создавайте новый XMLHttpRequest для каждого прохода цикла.

а вообще лучше откажитесь от цикла используя альтернативу, ато это не дело :)

  Ответить  
 
 автор: neokortex   (28.01.2010 в 19:58)   письмо автору
 
   для: sl1p   (28.01.2010 в 16:59)
 

спасибо ОГРОМНОЕ
заработало.
Вот так работает, гет запросы происходят:


//// ЗДЕСЬ КОД XMLHttpRequest

if (r[j].checked == true) { 
            var url = "move.php?kakoi=" + r[j].value + "&kuda=" + id; 
                request_remove.open("GET", url, true); 
            request_remove.send(null); 
          

////// ВОТ ЭТОТ КОД НЕ РАБОТАЕТ, ТОЧНЕЕ НЕ ПОЛНОСТЬЮ 
response_remove = request_remove.responseText;
        document.getElementById("script_results").innerHTML = '<br />=' + response_remove + document.getElementById("script_results").innerHTML + ''; // соединяем старые результаты с новыми (формирование отчета "на лету")
                                           };


Но вот обновления нет.
Выводит только =<br />. То есть response_remove не работает =(

  Ответить  
 
 автор: sl1p   (28.01.2010 в 21:39)   письмо автору
 
   для: neokortex   (28.01.2010 в 19:58)
 

мм не совсем понятно что куда, покажите код с циклом.
+ где проверка на положительный ответ от сервера?
response_remove.onreadystatechange = function() {
    if(response_remove.readyState == 4) { // 4 - ответ готов
        response_remove = request_remove.responseText; 
        document.getElementById("script_results").innerHTML = '<br />=' + response_remove + document.getElementById("script_results").innerHTML + '';
    }
}

  Ответить  
 
 автор: neokortex   (29.01.2010 в 12:07)   письмо автору
 
   для: sl1p   (28.01.2010 в 21:39)
 

Вот полный исправленный код, но вот ответ все равно на экран не выводится, уже вообще ничего не выводится на экран. А гет запросы происходят, что не может не радовать.
Как сделать чтобы они выводились?


        for (var r = document.getElementsByName('remove_checkbox'), j = 0, l = r.length; j < l; j++) {

            if (r[j].checked == true) {

                var request_remove = false;
                try {
                    request_remove = new XMLHttpRequest();
                } 
                catch (trymicrosoft) {
                    try {
                        request_remove = new ActiveXObject("Msxml2.XMLHTTP");
                    } 
                    catch (othermicrosoft) {
                        try {
                            request_remove = new ActiveXObject("Microsoft.XMLHTTP");
                        } 
                        catch (failed) {
                            request_remove = false;
                        }
                    }
                }
                if (!request_remove) 
                    alert("Error initializing XMLHttpRequest!");

                var url = "move.php?kakoi=" + r[j].value + "&kuda=" + id;                
                request_remove.open("GET", url, true);
                response_remove = request_remove.responseText;

                request_remove.onreadystatechange = function(){
                    if (request.readyState == 4) {
                        document.getElementById("script_results").innerHTML = '<br />=' + response_remove + document.getElementById("script_results").innerHTML + ''; // соединяем старые результаты с новыми (формирование отчета "на лету")
                    };
                            };

                request_remove.send(null);
            };
            };


  Ответить  
 
 автор: sl1p   (29.01.2010 в 13:01)   письмо автору
 
   для: neokortex   (29.01.2010 в 12:07)
 

 var url = "move.php?kakoi=" + r[j].value + "&kuda=" + id;                 
                request_remove.open("GET", url, true); 

                request_remove.onreadystatechange = function(){ 
                    if (request_remove.readyState == 4) {
                        var out = request_remove.responseText;
                        document.getElementById("script_results").innerHTML = '<br />=' + out + document.getElementById("script_results").innerHTML + ''; // соединяем старые результаты с новыми (формирование отчета "на лету") 
                    }; 
                            }; 

                request_remove.send(null);

  Ответить  
 
 автор: neokortex   (29.01.2010 в 13:51)   письмо автору
 
   для: sl1p   (29.01.2010 в 13:01)
 

спасибо.
но вот теперь показывает только последний результат :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования