massef
@massef

Обработка Ajax запроса?

Привет!

Тернируюсь в функциях и Ajax запросах.
Есть два запроса и функция которая должна обрабатывать результат (сложение двух id), но не могу понять как вытащить данные в переменные.
https://codepen.io/anon/pen/YYMaKB?editors=0011

Правильно вообще я делаю? Предложите свой вариант с пояснениями.
  • Вопрос задан
  • 135 просмотров
Решения вопроса 2
roswell
@roswell
и швец, и жнец, и на дуде игрец
Первая буква в AJAX — сокращение от Asynchronous, из чего следует, что время и даже результат выполнения requestOne и requestTwo фактически неопределённы. Я бы устроил нечто вроде
requestOne( function( data ) {
    var r = false;
    if ( data ) {
        var r1 = data.id;
        requestTwo( function( data ) {
            if ( data ) {
                var r2 = data.id;
                console.log( r1 + r2 );
            }
        } );
    }
} );

Или через $.when ; примеры приводить не буду, их по ссылке достаточно.
Ответ написан
chupacabramiamor
@chupacabramiamor
Инженегр-программист
Каждая функция $.ajax возвращает так называемый объект Deffered. Их можно использовать при помощи еще одной функции $.when, при помощи которой мы при успешном завершении обоих запросов получаем возможность достучаться до ответов в одном месте:

console.clear();

var root = 'https://jsonplaceholder.typicode.com';

function requestOne(callback) {
    return $.ajax({
        type: "GET",
        url: root + '/posts/1',
        // dataType: "json",
        success: callback
    });
}

function requestTwo(callback) {
    return $.ajax({
        type: "GET",
        url: root + '/posts/2',
        // dataType: "json",
        success: callback
    });
}

function result() {
  var deffered1 = requestOne();
  var deffered2 = requestTwo();

  $.when(deffered1, deffered2).done(function(r1, r2) {
    console.log(r1[0].id + r2[0].id);
  })
  
  // результатом хотел видеть сложение двух айдишников
  // console.log(r1 + r2);
}
result();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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