Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.03.2018, 23:50
Профессор
Отправить личное сообщение для Sergey1986 Посмотреть профиль Найти все сообщения от Sergey1986
 
Регистрация: 28.02.2018
Сообщений: 172

как из ajax вернуть переменную
Всем добра)!
Прошу помощи! есть такой кусочек кода

var response = [];		
		function ajaxRequest() {
			var block = ("autocomplete_job");
			//alert("ajaxRequest");
			$.ajax({
				type: "POST",
				url: "php/zn-edit_controller.php",
				//async:false,
				data:({ZNID:ZNID, block:block}),
				/* прочие настройки */
					success: function (data) {
					   response = data.split("~");
					   //alert(response);
					}
			  });
			return response;
		}
			
		var something = ajaxRequest();
		alert(something);


если async:true, то alert пустой
а если async:false, то все гуд!

вопрос как вывести массив из ajax при async:true (в асинхронном режиме)?!

Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 15.03.2018, 00:14
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,750

function ajaxRequest(callback) {
	var block = ("autocomplete_job");
	//alert("ajaxRequest");
	$.ajax({
		type: "POST",
		url: "php/zn-edit_controller.php",
		//async:false,
		data: ({
			ZNID: ZNID,
			block: block
		}),
		/* прочие настройки */
		success: function(data) {
			response = data.split("~");
			callback(response);
		}
	});
	return response;
};

ajaxRequest(function(response){
	alert(response);
});
Ответить с цитированием
  #3 (permalink)  
Старый 15.03.2018, 10:36
Профессор
Отправить личное сообщение для Sergey1986 Посмотреть профиль Найти все сообщения от Sergey1986
 
Регистрация: 28.02.2018
Сообщений: 172

Спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 15.03.2018, 13:02
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Nexus,
А чем ваш вариант отличается от
success: function(data) {
			response = data.split("~");
			alert(response);
		}

???
Ответить с цитированием
  #5 (permalink)  
Старый 15.03.2018, 13:20
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,750

Dilettante_Pro, тем, что ваш вариант подразумевает выполнение какого-то определенного действия. Т.е. если я дважды вызову функцию "ajaxRequest", то дважды получу 1 результат.
В случае с callback'ом я могу по завершению запроса выполнить различные действия без переопределения функции.
Тс наверняка не спроста закомментировал строку №13.
Ответить с цитированием
  #6 (permalink)  
Старый 15.03.2018, 13:45
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

[quote=Nexus]
Сообщение от Nexus
Тс наверняка не спроста закомментировал строку №13
Строка №13 выводит результат внутри функции, по получении ответа,(как и ваш callback), а ТС хотел увидеть ответ вне функции.
Сообщение от Nexus
В случае с callback'ом я могу по завершению запроса выполнить различные действия без переопределения функции.
Ну в этом может и есть какое-то рациональное зерно
Ответить с цитированием
  #7 (permalink)  
Старый 15.03.2018, 13:58
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,750

Dilettante_Pro,
Сообщение от Dilettante_Pro
Строка №13 выводит результат внутри функции, по получении ответа,(как и ваш callback), а ТС хотел увидеть ответ вне функции.
Его желание по-настоящему может исполнить только синхронный запрос.
Ответить с цитированием
  #8 (permalink)  
Старый 15.03.2018, 16:04
Профессор
Отправить личное сообщение для Sergey1986 Посмотреть профиль Найти все сообщения от Sergey1986
 
Регистрация: 28.02.2018
Сообщений: 172

в пердложенном варианте alert(something); выдает ответ
т.е. переменной присвоен массив ( чего я хотел), с синхронным кодом все проще))))

к стати вопрос еще один)))


function fn_list(callback){
			$.ajax({
				type: "POST",
				url: "php/zn-edit_controller.php",
				data:({ZNID:ZNID, block:block}),
					success: function (data) {
					//$('#show_otladka').data(data)
				       //alert(data);
					   callback(data);
					}
			});
			//return data;
		};


	                        fn_list(function(data){
					//alert("ZNID" + ZNID + "block" + block);
					$('#show_otladka').html(data)
				});


как при вызове fn_list передать ей переменные ZNID и block

Заранее спасибо!
Ответить с цитированием
  #9 (permalink)  
Старый 15.03.2018, 16:11
Профессор
Отправить личное сообщение для Sergey1986 Посмотреть профиль Найти все сообщения от Sergey1986
 
Регистрация: 28.02.2018
Сообщений: 172

Функция
function fn_list(block, ZNID, callback){...



Вызов
fn_list(block, ZNID, function(data){...


вроде работает!)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax. Как сделать загрузку изображений, отображение, удаление как на Авито wowtschuk AJAX и COMET 1 07.03.2017 01:34
Как получить содержимое контейнера в переменную? snovapavel jQuery 0 27.11.2016 04:56
как вернуть переменую в swfupload ureech jQuery 13 01.05.2016 20:43
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
как вернуть success (ajax) shaltay jQuery 3 20.01.2012 18:39