Ajax в JQuery не возвращает правильный результат - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь вернуть уникальные результаты во внутренней области моего Ajax-запроса.

var id = pooInLoo['timeline'][e][i]['_id']; 
$.ajax({
    url: '/api/'+id+'/lovequantity',
    type: 'GET',
        success: function(loveCount) {
            console.log('inside: ' +id);
            $('#'+id).append(loveCount);
        }
    });

console.log возвращает только один результат внутри этого Ajax-запроса. На самом деле, есть 3 уникальных идентификатора, которые должны быть зарегистрированы.

$.ajax({
            url: '/api/timeline/profile',
            type: 'GET',
            success: function(pooInLoo) {
                for(var e = 0; e < pooInLoo['timeline'].length; e++) {
                    for (var i = 0; i < pooInLoo['timeline'][e].length; i++) {
                        var id = pooInLoo['timeline'][e][i]['_id']; 
                        $.ajax({
                            url: '/api/'+id+'/lovequantity',
                            type: 'GET',
                            success: function(loveCount) {
                                console.log('inside: ' +id);
                                $('#'+id).append(loveCount);
                            }
                        });
                        console.log('outside: ' +id);
                        $('#timelineWrapper').append('<div class="timeline"> <div class="row"> <div class="col-sm-12 col-lg-12"> <div id="author"> <div id="profilePhoto"> <img src="" /> </div> <div id="name"> <h6> @'+pooInLoo['timeline'][e][i]['username']+'</h6> </div> </div> <hr> <div id="bookData"> <div id="bookCover"> </div> <div id="bookDetails"> <h4> '+pooInLoo['timeline'][e][i]['title']+' </h4> <h5> '+pooInLoo['timeline'][e][i]['author']+' </h5> <h6 id="'+pooInLoo['timeline'][e][i]['_id']+'"> <i class="fas fa-heart"></i></h6> </div> </div> </div> </div> </div>');
                    }
                }
            }
        });

Я отделил console.log от внутренней области видимости "изнутри" с внешней областью видимости "снаружи".

Внешняя область возвращает правильные 3 разных результата, в то время как внутренняя область возвращает только один результат 3 раза.

outside: 5b90e133ef88180357689b54 
outside: 5b9383c923f0a302693b8d3e
outside: 5b93840623f0a302693b8d40 
inside: 5b93840623f0a302693b8d40 x3

Что я могу сделать, чтобы внутренняя область видимости возвращала 3 разных идентификатора?

1 Ответ

0 голосов
/ 15 сентября 2018

Переменная id во внутренней области видимости является просто ссылкой на идентификатор внешней области видимости.Поскольку «inside» является функцией обратного вызова, она вызывается асинхронно, и когда она вызывается, id в значительной степени устанавливается на последний идентификатор, который был повторен во вложенном цикле for, что, вероятно, является причиной, по которой вы получаете 3 идентичных идентификатора, записанных в журнал.из внутреннего объема.Я думаю, что вы могли бы решить проблему, скопировав идентификатор из внешней области видимости в область функции обратного вызова вместо ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...