|
|
|
| Есть вот такой скрипт, как вернуть результат работы функции 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 пока на вы. | |
|
|
|
|
|
|
|
для: zavragnov
(01.04.2008 в 11:21)
| | undefined может возвратить и когда у вас php файл не дает результат | |
|
|
|
|
|
|
|
для: Antohins
(02.04.2008 в 11:16)
| | Если раскоментировать строки то все конечно работает и выводит в браузер, надо результат вернуть. | |
|
|
|
|
|
|
|
для: zavragnov
(02.04.2008 в 14:29)
| | вы пытаетесь присвоить переменной значение, которое php скрипт еще не отдал. передача данных не моментальна.
надо по таймеру отслеживать, завершена ли работа функции прикма данных (как я понимаю это processReqChange) | |
|
|
|
|
|
|
|
для: AlexSol
(02.04.2008 в 14:37)
| | Да я понимаю, что результат еще не получен а я пытаюсь его получить, из processReqChange, потому и прошу помощи | |
|
|
|
|
|
|
|
для: AlexSol
(02.04.2008 в 14:37)
| | Как по таймеру отслеживать, завершена ли работа функции? И как написать этот таймер? | |
|
|
|