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

HTML+CSS+JavaScript

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

 

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

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

тема: return (ajax)
 
 автор: zavragnov   (01.04.2008 в 11:21)   письмо автору
 
 

Есть вот такой скрипт, как вернуть результат работы функции loadXMLDoc_load? Если раскоментировать строки то все конечно работает и выводит в браузер, но надо не вывести результат в браузер, а присвоить результат переменной и потом ее обрабатать в функции help.



var req_ajax;  
var text_pro_ajax;

function loadXMLDoc_load(url) {
    req_ajax = null;
    if (window.XMLHttpRequest) {
        try {
            req_ajax = new XMLHttpRequest();
        } catch (e){}
    } else if (window.ActiveXObject) {
        try {
            req_ajax = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
                req_ajax = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){}
        }
    }

    if (req_ajax) {
            req_ajax.onreadystatechange = processReqChange;
            req_ajax.open("GET", url, true);
            req_ajax.send(null);
            reqTimeout = setTimeout("req_ajax.abort();", 5000);
        
    } else {
        //document.getElementById(div_for_load).innerHTML = 'Браузер не поддерживает AJAX';
        return 'Браузер не поддерживает AJAX';
    }
    
}  

function processReqChange()  

    var div_state=document.getElementById(div_for_debag);
    div_state = stat_ajax(req_ajax.readyState);
    document.getElementById(div_for_debag).innerHTML = div_state;
      
    if (req_ajax.readyState == 4)  
    {  
        if (req_ajax.status == 200)  
        {  
            
    if(text_pro_ajax!==req_ajax.responseText)//Если последнее сообщение которое выводилось !== текущему 
            {
    //document.getElementById(div_for_load).innerHTML = req_ajax.responseText;
    
            text_pro_ajax = req_ajax.responseText; 
            
    return req_ajax.responseText;

            } 
        }  
        else  
        {  
    //document.getElementById(div_for_load).innerHTML  = 'Не удалось получить данные';
    return 'Не удалось получить данные';
        }  
    }    


function stat_ajax(n)
{
    switch (n) {
        case 0:
        return "";//не инициализирован
        break;

        case 1:
        //return "загрузка...";
        return '<img src="design/preloaders.gif">';
        break;

        case 2:
        return "";//загружено
        break;

        case 3:
        //return "в процессе...";
        return '<img src="design/preloaders.gif">';
        break;

        case 4:
        return "";//готово
        break;

        default:
        return "";//неизвестное состояние
    }
}



Есть вот такая функция,


function help(snip)

var result = '';
div_for_load = new String('help');
div_for_debag = new String('status_help');

//document.getElementById('help').style.display = "block";
//loadXMLDoc_load('manual/help.php?id_snip=' + snip + '&round='+ Math.round(1000)); 

result = loadXMLDoc_load('manual/help.php?id_snip=' + snip + '&round='+ Math.round(1000)); 
document.getElementById('help').innerHTML = result;

... и другие действия с  result

}


Сейчас ничего не возвращается, точнее возвращается undefined

Помогите перписать код, а то я с javascript пока на вы.

   
 
 автор: Antohins   (02.04.2008 в 11:16)   письмо автору
 
   для: zavragnov   (01.04.2008 в 11:21)
 

undefined может возвратить и когда у вас php файл не дает результат

   
 
 автор: zavragnov   (02.04.2008 в 14:29)   письмо автору
 
   для: Antohins   (02.04.2008 в 11:16)
 

Если раскоментировать строки то все конечно работает и выводит в браузер, надо результат вернуть.

   
 
 автор: AlexSol   (02.04.2008 в 14:37)   письмо автору
 
   для: zavragnov   (02.04.2008 в 14:29)
 

вы пытаетесь присвоить переменной значение, которое php скрипт еще не отдал. передача данных не моментальна.

надо по таймеру отслеживать, завершена ли работа функции прикма данных (как я понимаю это processReqChange)

   
 
 автор: zavragnov   (02.04.2008 в 14:40)   письмо автору
 
   для: AlexSol   (02.04.2008 в 14:37)
 

Да я понимаю, что результат еще не получен а я пытаюсь его получить, из processReqChange, потому и прошу помощи

   
 
 автор: zavragnov   (02.04.2008 в 15:20)   письмо автору
 
   для: AlexSol   (02.04.2008 в 14:37)
 

Как по таймеру отслеживать, завершена ли работа функции? И как написать этот таймер?

   
Rambler's Top100
вверх

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