Установите задержку для этой AJAX Call Loop - PullRequest
0 голосов
/ 28 марта 2020

Я получаю сообщение об ошибке на моем AJAX звонке, и мне кажется, что мне нужно установить задержку на каждый раз, когда il oop на моем втором ajax звонке. Но я не могу заставить его работать.

Это мой 1-й ajax звонок, внутри этого ajax вызова есть jquery каждый l oop, который вызывает 2-й ajax вызов. Я добавил функцию setTimeout, но все равно получил сообщение об ошибке на консоли «Uncaught RangeError: Превышен максимальный размер стека вызовов»

$.ajax({
            url: mysite.ajax_url,
            type: 'POST',
            data: {
                'action': 'test_ajax_function',
                'user_input': user_input_last
            },
            success:function(data) {
                $(".container").css("opacity", 1);
                $("#loading-img").css({"display": "none"});

                var array_data = data.split("||");

                var items_count = array_data[0];
                var items = array_data[1];



                jQuery.each(JSON.parse(items), function() {

                setTimeout(function(){    
                getItemDetails(this);
                }, 3000);

                });



            },
            error: function(errorThrown){
                console.log(errorThrown);
            }
        }); 

Это 2-й ajax вызов.

function getItemDetails(id) {

    var item_id = id;

        $.ajax({
            url: mysite.ajax_url,
            type: 'POST',
            data: {
                'action': 'getItem',
                'id': item_id
            },
            success:function(data) {

            console.log(data);

            },
            error: function(errorThrown){
                console.log(errorThrown);
            }
        });    

}    


});

1 Ответ

0 голосов
/ 28 марта 2020

При первом вызове ajax не передавайте this в качестве параметра для getItemDetails, это то, что вызывает вашу ошибку.

Так как кажется, getItemDetails ожидает, что параметр будет Идентификатор предмета, просто сделайте это:

jQuery.each(JSON.parse(items), function(index, item) {
    getItemDetails(item.id);  //<------ I'm assuming 'id' is the name of the property
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...