Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.12.2013, 00:17
Интересующийся
Отправить личное сообщение для dmitriyk Посмотреть профиль Найти все сообщения от dmitriyk
 
Регистрация: 20.09.2013
Сообщений: 13

AJAX в функции
Здравствуйте, приучили меня дабы не городить кучу кода засовывать все в функции, вот и чтоб не писать в своем случае аякс запрос 20 раз я решил сунуть его в функцию, но возникла проблема, подробнее опишу кодом.
Сейчас идет как то так
function _list()
{
	$.ajax({
   		type: "POST",
   		url: 'ajax.php',
   		data: {item:'2',type:1},
   		dataType: "HTML",
   		success: function(data){
   			
  		alert('data');
   		}
 	});
}

То есть в функции делается AJAX запрос c определенными параметрами и далее обрабатывается ответ.
Но обработка ответа, как и параметры каждый раз разные поэтому я думал сделать что то отдельной функции для AJAX
function ajax(p1,p2)
{
	$.ajax({
   		type: "POST",
   		url: 'ajax.php',
   		data: {item:p1,type:p2},
   		dataType: "HTML",
   		success: function(data){
   			
   		}
 	});

И получать ответ этой функции хотел в переменную как то так
result = ajax('1','2');

То есть в переменную result должен попасть результат запроса опыт говорит что надо использовать return но вот в какое место его засунуть не могу понять
Ответить с цитированием
  #2 (permalink)  
Старый 16.12.2013, 05:09
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от dmitriyk
опыт говорит что надо использовать return
Это тебе говорит опыт синхронного программирования. Когда результат есть здесь и сейчас. А вот в асинхронных аякс запросах невозможно вернуть то, чего еще нет, и появится оно только после выполнения запроса (несколько десятков/сотен милисекунд). Был бы у тебя асинхронный опыт, он бы подсказал что надо использовать callback-функцию.

function ajax(p1,p2, callback)
{
    $.ajax({
        type: "POST",
        url: 'ajax.php',
        data: {item:p1,type:p2},
        dataType: "HTML",
        success: callback
    });
}



ajax('a', 'b', function(data){ alert(data) });
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 16.12.2013, 11:36
Интересующийся
Отправить личное сообщение для dmitriyk Посмотреть профиль Найти все сообщения от dmitriyk
 
Регистрация: 20.09.2013
Сообщений: 13

А если я в callback функции запишу результат в глобальную переменную я смогу с ней дальше работать? например вот так
ajax('a', 'b', function(data){ global_ajax = data });
$('#block').html(global_ajax)
Ответить с цитированием
  #4 (permalink)  
Старый 16.12.2013, 12:02
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Нет. Ты походу не врубился что такое асинхронность!
JS не будет ждать пока запрос завершится и появится результат!!!!
Вместо этого он будет дальше выполняться. И только потом, спустя какое-то время, будет исполнена функция обратного вызова. Вкурил? Сначала выполнится $(block).html(global_ajax), а уж потом function(data) {blobal_ajax = data}
Врубился?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 16.12.2013, 12:43
Интересующийся
Отправить личное сообщение для dmitriyk Посмотреть профиль Найти все сообщения от dmitriyk
 
Регистрация: 20.09.2013
Сообщений: 13

Врубился, просто все же надеялся что можно как то поступить, например дождаться полного выполнения AJAX запроса или что то такое
И все же спасибо callback думаю упростить задачу
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение ответа от функции в которой выполняется ajax Kelly Общие вопросы Javascript 7 10.09.2012 16:23
JQuery. Ajax. Глобальные функции Harvey jQuery 5 31.08.2011 16:54
Вызов конкретной функции класса на php AJAX запросом Slavenin AJAX и COMET 8 03.06.2011 22:47
Вызов функции печати страницы полученной через AJAX Garik AJAX и COMET 4 02.03.2011 17:05
return функции с ajax запросом !? namo86 AJAX и COMET 2 19.01.2011 19:30