Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2013, 14:46   #11
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Цитата:
Сообщение от Armatus Посмотреть сообщение
Блаблабла
Читайте документацию https://developer.mozilla.org/en-US/...onous_Requests
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 13.11.2013, 14:49   #12
Armatus
Форумчанин
 
Регистрация: 09.05.2009
Сообщений: 122
По умолчанию

ок. спасибо за дельные наводки =) буду читать. позже отпишусь по результату.
Armatus вне форума Ответить с цитированием
Старый 13.11.2013, 15:02   #13
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

callback делайте анонимным/илинет в category_add_form_show, тогда получите ваш респонс в нем, правда не ретурном как хотите, ну да это ведь не повод?

Последний раз редактировалось eval; 13.11.2013 в 15:04.
eval вне форума Ответить с цитированием
Старый 13.11.2013, 16:44   #14
Armatus
Форумчанин
 
Регистрация: 09.05.2009
Сообщений: 122
По умолчанию

С callback немножко подразобрался. А вот с глобальными переменными пока непонятно =)

Код:
function category_list_view(id,callback) {
	var event="category_list_view";
	var xmlhttp = getXmlHttp(); // Создаём объект XMLHTTP
    		xmlhttp.open('POST', '/admin/script/shop/shop_event.php', true); // Открываем асинхронное соединение
    		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // Отправляем кодировку
    		xmlhttp.send("id="+encodeURIComponent(id)+"&event=" + encodeURIComponent(event)); // Отправляем POST-запрос
    		xmlhttp.onreadystatechange = function() { // Ждём ответа от сервера
      			if (xmlhttp.readyState == 4) { // Ответ пришёл
       		 		if(xmlhttp.status == 200) { // Сервер вернул код 200 (что хорошо)
       		   		callback(xmlhttp.responseText); // Выводим ответ сервера
       		 		}
      			}
  		};
 }


function category_add_form_show(id,name_kat) {
	var category_list=123;
	category_list_view(id,function(resp){category_list=resp;});
	alert(category_list);
В итоге вывод 123. Как правильно вывести значиние resp в этом случае?

Цитата:
Сообщение от eval Посмотреть сообщение
ну да это ведь не повод?
Конечно нет =)

Последний раз редактировалось Stilet; 13.11.2013 в 16:57.
Armatus вне форума Ответить с цитированием
Старый 13.11.2013, 16:49   #15
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

опять на старые грабли ..
Цитата:
function(resp){category_list=resp;}
это работает асинхронно, а алерт синхронно
eval вне форума Ответить с цитированием
Старый 13.11.2013, 16:55   #16
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Цитата:
Сообщение от Armatus Посмотреть сообщение
С callback немножко подразобрался. А вот с глобальными переменными пока непонятно =)

Код:
function category_list_view(id,callback) {
	var event="category_list_view";
	var xmlhttp = getXmlHttp(); // Создаём объект XMLHTTP
    		xmlhttp.open('POST', '/admin/script/shop/shop_event.php', true); // Открываем асинхронное соединение
    		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // Отправляем кодировку
    		xmlhttp.send("id="+encodeURIComponent(id)+"&event=" + encodeURIComponent(event)); // Отправляем POST-запрос
    		xmlhttp.onreadystatechange = function() { // Ждём ответа от сервера
      			if (xmlhttp.readyState == 4) { // Ответ пришёл
       		 		if(xmlhttp.status == 200) { // Сервер вернул код 200 (что хорошо)
       		   		callback(xmlhttp.responseText); // Выводим ответ сервера
       		 		}
      			}
  		};
 }


function category_add_form_show(id,name_kat) {
	var category_list=123;
	category_list_view(id,function(resp){category_list=resp;});
	alert(category_list);
В итоге вывод 123. Как правильно вывести значиние resp в этом случае?
Вы пока не понимаете сути. JS абстракционно не поддерживает ожидание, в нем обычно юзают кэллбеки, если нужно дождаться IO процесс. Например, вы передаете анонимную функцию в качестве кэллбэка, именно в ней вы 100% будете иметь значение ответа resp — это значит, что весь функционал, который в котором вы хотите использовать resp должен выполнятся в контексте это анонимной функции.

Код:
function category_add_form_show(id,name_kat) {
	var category_list=123;
	category_list_view(id,function(resp){
alert(resp);
});
}
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 13.11.2013, 17:13   #17
Armatus
Форумчанин
 
Регистрация: 09.05.2009
Сообщений: 122
По умолчанию

спасибо мужики =) Вроде разобрался что к чему. =)
Armatus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP - case внутри функции нужен ли break когда делаем return? fishlabsoman PHP 3 29.10.2012 12:15
Передача значения из функции в функцию(с++) asdasys Помощь студентам 1 11.10.2012 22:04
Функции.Описать Функцию... Tiny Помощь студентам 4 30.03.2010 19:20
return 1 в void функции ! интеграл Помощь студентам 6 17.03.2010 22:00
Написать функцию в функции^^ kyroshyp Microsoft Office Excel 0 15.12.2009 19:58