Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 18.08.2011, 22:10   #1
kos1nus
Пользователь
 
Регистрация: 14.07.2008
Сообщений: 47
По умолчанию Возврат результата XMLHttpRequest

Подскажите возможно ли написать функцию XMLHttpRequest чтоб она возвращала результат.

ну что то вроде такого
Код:
var test = function(){
. . . 
XMLHttpRequest
. . .
}
Необходимо чтоб результат возвращался туда откуда функцию вызываем. я не знаю как это сделать.
kos1nus вне форума Ответить с цитированием
Старый 18.08.2011, 22:16   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Так, может:
Код:
result=XMLHttpRequest()
?
Или что нужно конкретней?
P.S. Если же под XMLHttpRequest имеется в виду объект, то у него есть методы, которые и будут возвращать то, что нужно

Последний раз редактировалось motorway; 18.08.2011 в 22:27.
motorway вне форума Ответить с цитированием
Старый 18.08.2011, 22:35   #3
kos1nus
Пользователь
 
Регистрация: 14.07.2008
Сообщений: 47
По умолчанию

Цитата:
Сообщение от motorway Посмотреть сообщение
Так, может:
Код:
result=XMLHttpRequest()
?
Или что нужно конкретней?
P.S. Если же под XMLHttpRequest имеется в виду объект, то у него есть методы, которые и будут возвращать то, что нужно
прости, но я не понял.

хорошо, вот код самой функции
Код:
function Request(x){
	var url = 'http://test.php'; 
	req = new XMLHttpRequest();
	req.open("GET", url, true);
	req.onreadystatechange = function processReqChange() {   	
		ab = window.setTimeout("req.abort();", 5000);
		if (req.readyState == 4) {
			clearTimeout(ab);
			if (req.status == 200) {	
				alert(eq.responseText);			
			} 
	    }  
	}
    req.send(null);
}
к примеру вызвал я ее из другой функции
Код:
function XXX(){
   Request(x);
}
каким образом мне вернуть результат req.responseText обратно в функцию XXX.

как я не пытаюсь, у меня ничего не получается. что и куда мне надо дописать?

Последний раз редактировалось kos1nus; 18.08.2011 в 22:39.
kos1nus вне форума Ответить с цитированием
Старый 18.08.2011, 22:41   #4
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Дописать в конце первой функции return req.responseText, а потом в той result=Request(x);
P.S. Пример:
Код:
<script>
function A1()
{
return 11;
};
function A2()
{
s=A1();
s+=2;
return s;
};
alert(A2());
</script>

Последний раз редактировалось motorway; 18.08.2011 в 22:45.
motorway вне форума Ответить с цитированием
Старый 18.08.2011, 23:01   #5
kos1nus
Пользователь
 
Регистрация: 14.07.2008
Сообщений: 47
По умолчанию

нет. не работает.

Я пытаюсь показать результат через алерт. Так вот он срабатывает сразу, хотя в реальности нужно секунды три чтоб обменяться с сервером.

алерт возвращает undefined.
kos1nus вне форума Ответить с цитированием
Старый 18.08.2011, 23:11   #6
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

У меня, например, этот код при связи с к-л. сайтом выдает статус, равный 0, что означает, что объект не инициализирован
motorway вне форума Ответить с цитированием
Старый 18.08.2011, 23:22   #7
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Да, что-то я ступил, надо было подключаться к скрипту
motorway вне форума Ответить с цитированием
Старый 18.08.2011, 23:27   #8
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Я попробовал, к примеру, такой код:
Код:
<script>
var req;
var url = 'http://localhost:6448/temp38/img2.php'; 
function Request(url){
	
	req = new XMLHttpRequest();
	req.open("GET", url, true);
	req.onreadystatechange = function processReqChange() {   	
		ab = window.setTimeout("req.abort();", 10000);
		if (req.readyState == 4) {

			clearTimeout(ab);

if (req.status == 200) {	
				alert(req.responseText);			
			} 
	    }  
	}
    req.send(null);
}

  Request(url);

</script>
В PHP скрипте задержка 7-секундная установлена. В браузере как раз появляется алерт не сразу
motorway вне форума Ответить с цитированием
Старый 19.08.2011, 07:46   #9
kos1nus
Пользователь
 
Регистрация: 14.07.2008
Сообщений: 47
По умолчанию

ты же не возвращаешь результат, а просто вызываешь фукнцию, по завершению которой появляется алерт. так и у меня работает.
kos1nus вне форума Ответить с цитированием
Старый 19.08.2011, 08:32   #10
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,825
По умолчанию

В чистом джаваскрипте не знаю, но в jQuery к функции аякса можно установить значение асинхронного обмена в false, тогда функция не закончит работу, пока не получит ответ сервера.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XmlHttpRequest "Failed to load resource" в chrome Hippos JavaScript, Ajax 11 05.02.2013 05:23
[Ajax]XMLHttpRequest проблема с получением ответа Geniy00 JavaScript, Ajax 1 27.05.2011 23:53
Ajax. Видимость XMLHttpRequest. Викдон JavaScript, Ajax 0 03.08.2010 18:09
Вопрос по XMLHttpRequest NeveX JavaScript, Ajax 7 25.09.2009 09:34
Возврат результата функции по ссылке gladov Общие вопросы C/C++ 2 24.06.2008 22:48