如何从Ajax调用中排除页面

时间:2018-08-17 11:16:38

标签: jquery ajax

我正在为一家餐厅创建管理面板,我对订单逻辑有疑问。

我有一个Orders表和一个Orders_check表.Orders表具有名称,地址,详细信息,价格等列,而orders_check表只有一个可以为1或0的列。整数从0到1。

在管理面板上,在“订单”页面上,我每5秒钟进行一次ajax调用,我会验证整数(来自orders_check)是否为1。如果为真,我将从数据库中提取未看到的订单并将其添加到桌子。

直到现在一切都很好,但是我在管理面板中有很多页面,例如产品,创建产品,创建类别等。我必须每5秒对标头进行一次ajax调用,以查看是否有任何新订单并弹出警报消息。

问题是,如果我在订单页面上,我将有2个ajax调用将执行相同的操作:一个来自标题,一个来自订单页面。

如果我在订单页面上,如何告诉标头的ajax调用不这样做?

标题的ajax:

    setInterval(checkNumberOfOrders, 5000);

function checkNumberOfOrders() {
    var controllerOrderCheck = 'http://localhost/restaurant/admin/order/checkNumberOfOrdersAjax';
    $.ajax({
        type: "POST",
        url: controllerOrderCheck,
        dataType: 'json',
        async: false,
        cache: false,
        success: function (param) {
            if (param.done) {
                $('#numberOrders').text(' (' + param.number['number'] + ')');
            }
        }
    });

订购Ajax:

setInterval(checkOrder, 5000);
function checkOrder() {
    var controllerOrderCheck = 'http://localhost/restaurant/admin/order/checkOrderActionAjax';
    $.ajax({
        type: "POST",
        url: controllerOrderCheck,
        dataType: 'json',
        async: false,
        cache: false,
        success: function (param) {
            if (param.done) {
                for (var i = 0;i< param.orders.length; i++) {
                    console.log(i);
                    var lastRow = table.row.add({
                        "Id": param.orders[i]['id'],
                        "Client": param.orders[i]['name'] +' '+ param.orders[i]['secondName'],
                        "Adresa": param.orders[i]['address'],
                        "Data&Ora": param.orders[i]['date'],
                        "Reducere": param.orders[i]['disscount'] + "%",
                        "Pret": param.orders[i]['price'] + " lei"
                    }).draw().node();
                    $(lastRow).css("background-color","rgba(255, 179, 102)");
                }
            }
        }
    });
}

1 个答案:

答案 0 :(得分:0)

在变量中设置这些Ajax调用,选中if( typeof FirstAjaxCall === 'undefined'),然后您可以调用第二个Ajax调用。

var FirstAjaxCall = $.ajax( /* logic */ );

// order page

if (typeof FirstAjaxCall === 'undefined') { // this means that FirstAjaxCall not exist which means the first didn't happen
  // call ajax order
}