Задать вопрос
@howuu

Как получить такой return функции с ajax?

Есть такая функция:
function request(url, param) {
  var url = url;
  var csrftoken = getCookie('csrftoken');
  data = {'csrfmiddlewaretoken':  csrftoken, param: param };

  $.ajax({
          url: url,
          type: "POST",
          data: data ,
          cache:false,
          dataType: "json",
          success: function(resp){
            alert(resp.answer); 
            
        }
       }) ;
  }


Как получить из нее resp.answer, когда вызываешь ее так
answer = request(url="/myurl/", param = param)
Нужно что бы переменной answer присвоилось значение resp.answer
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
BRAGA96
@BRAGA96
Async/await работает с Theneble объектами, а в Deferred объекте jQuery есть then метод.
1. Из функции request делаем return $.ajax(...)
2. Использовать async/await в функции с флагом async
function request(url, param) {
    // ...
    return $.ajax({
        // ...
    });
}

request("/url", param).done(function (data) {
    console.log(data.answer);
});

(async () => {
    const answer = await request("/url", param);
    console.log(answer);
})();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
function request(url, param) {
return new Promise(function (res) {
  var url = url;
  var csrftoken = getCookie('csrftoken');
  data = {'csrfmiddlewaretoken':  csrftoken, param: param };

  $.ajax({
          url: url,
          type: "POST",
          data: data ,
          cache:false,
          dataType: "json",
          success: function(resp){
            res(resp); 
            
        }
       }) ;
})
  }

request(url="/myurl/", param = param).then(function (resp) {
alert(resp.answer);
})


Или так
function request(url, param) {
  var url = url;
  var csrftoken = getCookie('csrftoken');
  data = {'csrfmiddlewaretoken':  csrftoken, param: param };

 return $.ajax({
          url: url,
          type: "POST",
          data: data ,
          cache:false,
          dataType: "json",
       }) ;
  }
Ответ написан
Ваш ответ на вопрос

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

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