Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Return для функции из подфункции (https://javascript.ru/forum/misc/70645-return-dlya-funkcii-iz-podfunkcii.html)

enselerizer 21.09.2017 19:00

Return для функции из подфункции
 
Здравствуйте!
Имею вот такой код:
function ajaxLoadElements(obj) {
	$.ajax({
	  dataType: 'json',
	  url: 'ajax.php?action=ajaxLoadElements',
	  success: function(JSONdata){
		if(JSONdata.fail) {
			openModal(JSONdata.type, JSONdata.msg);	
			return false;
		}
	  }
	});
	return true;
}

Return, расположенный в function(JSONdata){ ... }, что логично, завершает именно эту функцию, а не функцию ajaxLoadElements. А как сделать правильно?

Заранее благодарен за помощь!

Rasy 21.09.2017 19:15

Можно сделать запрос синхронным, что на моей практике никогда не использовалось. Страница зависает, дожидаясь ответа сервера.
function ajaxLoadElements(obj) {
  var response = $.ajax({
    dataType: 'json',
    url: 'ajax.php?action=ajaxLoadElements',
    async: false
  }).responseText;

  if (!response)
    return false;
  return true;
}


Цитата:

Сообщение от enselerizer
А как сделать правильно?

Через асинхронную природу js с использованием коллбэка, чтобы получить значение из функции.
function ajaxLoadElements(obj, callback) {
  $.ajax({
    dataType: 'json',
    url: 'ajax.php?action=ajaxLoadElements',
    success: function(JSONdata){
      if(JSONdata.fail) {
        openModal(JSONdata.type, JSONdata.msg); 
        callback(false);
        return;
      }
      callback(true);
    }
  });
}
ajaxLoadElements({}, function(response) {
  if (response) alert();
});

enselerizer 21.09.2017 19:37

Rasy, спасибо огромное! :dance:
Вопрос закрыт


Часовой пояс GMT +3, время: 02:31.