AJAX-запрос в setInterval () перестает работать из-за другого AJAX-запроса - PullRequest
0 голосов
/ 17 января 2019

У меня есть два запроса AJAX. Один из запросов ($.post(/updatechart, [...])) запускается повторно с использованием setInterval(). Второй ($.post(/updateperiod, [...])) срабатывает при выборе элемента из выпадающего меню. Из-за второго запроса первый перестает работать через некоторое время, если я запускаю второй несколько раз. Иногда они оба перестают работать. Может кто-нибудь сказать мне, как я могу это исправить?

EDIT: перестает работать = запрос больше не отправляется на сервер

EDIT2: Благодаря IcePickle я исправил проблему. Я не отправлял ответ на второй запрос AJAX.

var retrieved;
var period_types = {
    week: "Expenses this week",
    month: "Expenses this month",
    year: "Expenses this year"
};

$(document).ready(function(){
    setInterval(function() {
        updateGraph();
    }, 1000);

    $(".dropdown-item").click(function() {
        var new_period = $(this).attr('value');
        $.post("/updateperiod", data = {period: new_period});
    });
});

function updateGraph() {
    $.post("/updatechart", function(response) {
        retrieved = response;
        drawGraph(retrieved);
    });
}

function drawGraph(response) {
    var x_axis = []
    var y_axis = []
    var data = [];
    response.db.forEach(element => {
        x_axis.push(element.amount);
        y_axis.push(element.category); 
    });
    data = [
        {
            type: 'bar',
            y: y_axis,
            x: x_axis,
            orientation: 'h',
            marker: {
                color: 'rgb(33, 40, 109)'
            }
        }
    ];
    Plotly.newPlot('myDiv', data);
    document.getElementById("p1").innerHTML = period_types[response.period];
}

1 Ответ

0 голосов
/ 17 января 2019

Вы можете добавить параметр настроек в $.post(), который равен методу $.ajax(), где вы можете установить параметр:

settings: {
 "async": "false"
}

Таким образом, вы можете сделать несколько запросов AJAX на странице.

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