使用来自其自身响应的数据重新运行Ajax

时间:2018-08-28 13:43:44

标签: javascript jquery ajax

是否可以从成功数据中将一些更改过的变量插入到ajax中?

在页面加载时,首先ajax触发并显示mysql的一些记录,然后我获取最后一个记录ID并将其存储在latestID中,接下来第二个ajax触发并仅向前检索该ID中的记录,然后存储lastId然后再次射击。

   $.ajax({
        type: 'POST',
        url: '{{ ... }}',
        dataType: 'json',
        'success': function (data) {
            callback(data);
        }
    });
    function callback(response) {
        var idList = [];
        var printer_category = response.printer.productcategory_id;
        var printer_timer = parseInt(response.printer.timer);
        var printer_storeid = response.printer.store_id;
        var printer_physicalPrint = parseInt(response.printer.physical_print);
        var printer_id = parseInt(response.printer.id);
        var data = response.transactions;
        console.log(response);
        $.each(data, function (i, dataitem) {
            console.log(dataitem);
            idList.push(dataitem.id);
        });
        var latestID = Math.max.apply(Math, idList);


        function getData() {
            $.ajax({
                type: 'POST',
                url: '{{ ... }}',
                dataType: 'json',
                data: {latestID: latestID, printer_timer: printer_timer, printer_storeid: printer_storeid, printer_category: printer_category},
                success: function (data) {
                    console.log(data);
                    data = data.transactions;
                    if (data != 0) {
                        var idList = [];
                        $.each(data, function (i, dataitem) {
                            console.log(dataitem);
                            idList.push(dataitem.id);
                        });
                        var latestID = Math.max.apply(Math, idList);
                        console.log(latestID);
                    }
                }
            });
        }

        getData();
        setInterval(function () {
            getData();
        }, 10000); 

   }

});

如果我console.log(latestID)内的success: function显示正确的值,但是ajax发布data: {latestID: latestID},则每次运行1时的值setInterval

* EDIT:添加了完整的代码。

1 个答案:

答案 0 :(得分:1)

代替var latestID = Math.max.apply(Math, idList);

在成功回调中使用latestID = Math.max.apply(Math, idList);

在变量声明覆盖全局变量值的方法级别变量之前使用var。您想继续使用LatestID时,需要具有全局变量。