Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.03.2015, 14:25
Кандидат Javascript-наук
Отправить личное сообщение для koeshiro Посмотреть профиль Найти все сообщения от koeshiro
 
Регистрация: 05.12.2012
Сообщений: 125

AJAX Get и post вывод ответа по средствам return как оитог работы функции
var XHR={};
XHR.respons="";
XHR.getr=function (p,o,b)
	{
		var xhttp= new XMLHttpRequest();
		var url=p+"?";
		var response,redy;
		for (var k in o)
		{
			url+=k+"="+encodeURIComponent(o[k]);
		}
		xhttp.open('GET', url, b);
		xhttp.onload = function () {console.log(xhttp.responseText);if(xhttp.redyStatus == 4) redy=true; XHR.respons=xhttp.responseText;}
		xhttp.send(null);
		if(redy) return XHR.respons;
	}

Решил я написать удобные функции для get и post. Но начав с get в виде асинхронного запроса я столкнулся с проблемой. Я не могу вывести ответ сразу при помощи return. Подскажите как это ещё можно вывести? Так что бы при коде:
var some_name=XHR.getr("/test.php",{"test":"some"},true);
Получить переменную с ответом сервера, а не записывать его куда-то в глобальную функцию.
Ответить с цитированием
  #2 (permalink)  
Старый 04.03.2015, 14:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

koeshiro, при асинхронном запросе это невозможно...
Ответить с цитированием
  #3 (permalink)  
Старый 04.03.2015, 14:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

for (var k in o) {
   url+=k+"="+encodeURIComponent(o[k]);
}
//и
XHR.getr("/test.php",{"test":"some"},true)


А если нужно будет передать несколько значений?
Ответить с цитированием
  #4 (permalink)  
Старый 04.03.2015, 14:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от laimas
А если нужно будет передать несколько значений?
Объет он, знаешь ли, как резиновый!
Ответить с цитированием
  #5 (permalink)  
Старый 04.03.2015, 14:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

var url=p+"?";
.....
url+=k+"="+encodeURIComponent(o[k]);

Здается мне, что резина гореть будет, или это корректная строка запроса получится?

Последний раз редактировалось laimas, 04.03.2015 в 14:41.
Ответить с цитированием
  #6 (permalink)  
Старый 04.03.2015, 14:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от laimas
Здается мне, что резина гореть будет
Не будет.
Если только память не кончится...
Ответить с цитированием
  #7 (permalink)  
Старый 04.03.2015, 15:06
Кандидат Javascript-наук
Отправить личное сообщение для koeshiro Посмотреть профиль Найти все сообщения от koeshiro
 
Регистрация: 05.12.2012
Сообщений: 125

Сообщение от ksa Посмотреть сообщение
Не будет.
Если только память не кончится...
Ну это уже будет бред.
Получается с асинхронным запросом мне всё равно придётся сохранять всё в отдельный параметр объекта?
Ответить с цитированием
  #8 (permalink)  
Старый 04.03.2015, 20:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

Последний раз редактировалось laimas, 04.03.2015 в 20:46.
Ответить с цитированием
  #9 (permalink)  
Старый 05.03.2015, 09:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от koeshiro
Получается с асинхронным запросом мне всё равно придётся сохранять всё в отдельный параметр объекта?
Я не совсем понимаю про что ты написал... Но все приходящее на клиент хранится в памяти.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение ответа от функции в которой выполняется ajax Kelly Общие вопросы Javascript 7 10.09.2012 16:23
Как передать символ левой угловой скобки в Ajax POST ? didalek AJAX и COMET 16 30.11.2011 11:36
jQuery Ajax Rater Plugin и массив POST - Нужна помощь TROODON jQuery 12 30.12.2009 22:44
Как в ajax запросе передать файл методом POST mcpro jQuery 1 16.12.2009 11:41
как дождаться AJAX ответа scuter Общие вопросы Javascript 3 23.03.2008 05:54