当使用AJAX调用API时,网站在打开后重定向到index.php

Site redirects to index.php after being open while making calls to an API using AJAX

本文关键字:重定向 php index 网站 AJAX 调用 API      更新时间:2023-09-26

我构建了一个站点,该站点使用对外部API的AJAX调用不断刷新数据。由于浏览器的跨域限制,AJAX调用使用JSONP来获取JSON数据字符串。

该网站的功能是在一个更大的监视器上保持开放,这样我们的服务台就可以收到排队的门票数量的通知。该网站在一些不确定的时间内运行良好,通常在30分钟到一小时之间。但由于一些奇怪的原因,它中断并试图重定向到"index.php",而这并不存在。我不确定是什么原因造成的。

我在下面有相关代码。我花了一些时间将其缩小到特定的javascript函数。我花了一些时间在谷歌上寻找答案,但都一无所获。

也许有人对正在发生的事情有一些了解?或者有人知道我可以用什么好的网站监控工具来观察正在发生的事情吗?

需要补充的是,我的AJAX调用的"令牌"部分在我的站点中是有效的,但出于安全目的,我只是在这里清除了它。

HTML

<!DOCTYPE html>
<html>
<head>
    <title>WALLBOARD</title>
    <link href="Content/style.css" type="text/css" rel="stylesheet">
    <script src="Scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
    <script src="Scripts/wallboard.js" type="text/javascript"></script>
</head>
<body>
    <div id="div_hardware" class="div_normal span6">
        <h1>Hardware</h1>
        <div id="span_hardwareTickets">-</div>
    </div>
    <div id="div_atschool" class="div_normal span6">
        <h1>AtSchool</h1>
        <div id="span_atschoolTickets">-</div>
    </div>
    <div id="div_network" class="div_normal span3">
        <h1>Network</h1>
        <div id="span_networkTickets">-</div>
    </div>
    <div id="div_software" class="div_normal span3">
        <h1>Software</h1>
        <div id="span_softwareTickets">-</div>
    </div>
    <div id="div_openTickets" class="span3 div_normal">
        <h1>Open Tickets</h1>
        <div id="span_openTickets">-</div>
    </div>
    <div id="div_newTickets" class="span3 div_normal">
        <h1>New Tickets</h1>
        <div id="span_newTickets">-</div>
    </div>
    <script>
        grabParature();
    </script>
</body>

JAVASCRIPT

function grabParature() {
var url = "https://s3.parature.com/api/v1/5406/5426/Ticket";
$.ajax({
    url: url,
    type: "GET",
    dataType: "jsonp",
    cache: true,
    jsonp : "_callback_",
    jsonpCallback: "theData",
    data: {
        "_status_type_": "open",
        "_pageSize_" : "500",
        "_output_" : "javascript",
        "_token_" : "##################################"
    },
    success: function (results) {
        var openTickets = 0;
        var newTickets = 0;
        var atschoolTickets = 0;
        var hardwareTickets = 0;
        var softwareTickets = 0;
        var networkTickets = 0;
        for(var i = 0; i < results.Entities.Ticket.length; i++)
        {
            var queue = "";
            var status = results.Entities.Ticket[i].Ticket_Status.Status.Name["#text"];
            if (results.Entities.Ticket[i].Ticket_Queue != undefined) {
                queue = results.Entities.Ticket[i].Ticket_Queue.Queue.Name["#text"];
            }
            if (status === "Open") {
                openTickets++;
            }
            else if (status === "New") {
                newTickets++;
            }
            if (queue === "Hardware") {
                hardwareTickets++;
            }
            else if (queue === "Atschool") {
                atschoolTickets++;
            }
            else if (queue === "Network") {
                networkTickets++;
            }
            else if (queue === "Software") {
                softwareTickets++;
            }
        }
        $('#span_openTickets').html(openTickets);
        $('#span_newTickets').html(newTickets);
        $('#span_hardwareTickets').html(hardwareTickets);
        $('#span_atschoolTickets').html(atschoolTickets);
        $('#span_networkTickets').html(networkTickets);
        $('#span_softwareTickets').html(softwareTickets);
        setInterval(grabParature, 10000);
    }
});

};

编辑

根据Ryan Wheale的建议,我将setInterval(grabParature,10000)更改为setTimeout(grabParature,10000。我仍然可以重定向到index.php.

尽量不要设置间隔。您只需要设置Timeout()。这个间隔最终会累积一堆这样的调用,所以在大约30分钟后,我可以看到内存耗尽,因为同时会有大约180个ajax调用。不确定重定向发生的原因-我希望浏览器冻结。。。如果不测试就很难判断。