@schurin
Люблю катать с гор, особенно на санках

Как вернуть ответ ajax запроса в переменную?

Добрый день!

Реализую метод, он принимает путь в каталоге, делает запрос на сервер, передавая путь, сервер возвращает id.

Полученный ответ находится в другой области видимости и не могу положить егь в переменную которая ожидает ответа от вызова функции.

Ведь на момент присовения значения переменной отвте ещё не пришёл.

Подскажите как можно поступить в подобной ситуации?
var id = getId(relativePath);

function getId(relativePath) {

  var jqxhr = $.get("http://192.168.1.1:8080/ContentFileId", {
    "relativePath": relativePath
  }, null, "text");

  return jqxhr.always(function(response) {

    if (typeof response == 'string') {

      return response;

    } else {

      console.log(response.responseText);

    }

  })
}


вызов метода и его реализация будут происходить из разных мест
  • Вопрос задан
  • 1126 просмотров
Пригласить эксперта
Ответы на вопрос 1
IonDen
@IonDen
JavaScript developer. IonDen.com
getId(relativePath); - вот так нельзя. Аякс запрос не синхронный, чтобы получить его результат, вы должны сделать так:
// вместо
console.log(response.responseText);
// присвоить значение
id = response.responseText;
// продолжить выполнение своего кода.


Код можно организовать получше, чтобы было понятней:
function step1 () {
    // some code
    
    $.ajax({
        // параметры запроса
        success: function (data) {
            step2(data);
        }
    });
}

function step2 (data) {
    // some other code
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы