@Toopie
мамааааааааааааааааааааа

Видимость переменных в JavaScript?

Имеется код:
function isAdmin() {
	var result = $.ajax({
		url: '../php/index.php',
		type: 'POST',
		data: {'method': 'user.is_admin'},
		success: function(data) {
			if (data.response.code == 503) {
				return false;
			} else if (data.response.code == 504) {
				return false;
			}
		}
	});
	return result;
}

Мне надо, чтобы сама функция isAdmin() возвращала true/false, но JS не видит переменную result, помогите, пожалуйста.
  • Вопрос задан
  • 200 просмотров
Решения вопроса 2
konstantindeveloper
@konstantindeveloper
developer
При вызове функции isAdmin начинает выполняться асинхронно ajax-запрос при котором выполнение функции не блокируется и происходит возврат из функции return result;.

В вашем случае можно поступить немного другим образом. Воспользоваться методом done()

Пример:
function isAdmin () {
	var result = $.ajax({
		url: '../php/index.php',
		method: 'POST',
		data: { 'method': 'user.is_admin' },
	})

	return result
}

isAdmin().done(function (res) {
	if (res.status === "true") {
		// do something
	} else {
		// do something
	}
})
Ответ написан
Почитайте здесь: jquery.page2page.ru/index.php5/Ajax-%D0%B7%D0%B0%D...
и здесь qaru.site/questions/33557/return-value-from-inside...
Еще укажите пaраметр dataType: 'json'. (Данный параметр говорит о том, что вы получаете в ответ json)
function isAdmin() {
  $.ajax({
    url: '../php/index.php',
    type: 'POST',
    data: {'method': 'user.is_admin'},
    dataType: 'json',
    success: handleResponse
  });
}
function handleResponse(result)
{
//здесь код для работы с результатом
}


Вы вызываете функцию isAdmin -> она получает ответ и вызывает функцию handleResponse с параметром result.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы