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

标签 javascript jquery html ajax api

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

该站点的功能是在更大的监视器上保持打开状态,以便我们的服务台可以获知他们队列中有多少工单。该网站在一些不确定的时间内运行良好,通常在 30 分钟到一个小时之间。但由于某些奇怪的原因,它中断并尝试重定向到不存在的“index.php”。我不确定是什么原因造成的。

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

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

要补充一点,我的 AJAX 调用的“ token ”部分在我的站点中是有效的,但为了安全起见,我只是在此处将其清除。

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。

最佳答案

尽量不要设置间隔。你应该只需要 setTimeout()。间隔最终会叠加一堆这样的调用,这样大约 30 分钟后我可以看到内存不足,因为您将同时发出大约 180 个 ajax 调用。不确定为什么会发生重定向 - 我希望浏览器会卡住......如果不进行测试很难判断。

关于javascript - 使用 AJAX 调用 API 时,网站在打开后重定向到 index.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18151066/

相关文章:

javascript - 表单外的提交按钮

javascript - 隐藏和显示 div 不起作用,元素更改其属性当我使用 console.log() 但不显示

页面加载时的 JavaScript 删除空表行

javascript - Bootstrap 放大模型内容

jquery - 当 ul li 与 float :left; 一起使用时,iScroll 不会在 iPad 上向下滚动

javascript - 如何使用 JavaScript 从字符串中删除重复的 CSS 样式?

javascript - 如何使用 jQuery 淡出主 div 并淡入相应单击缩略图的内容

javascript - 两组大小不同的成员必须相遇(1v1,一次)

javascript - 如何仅使用 JavaScript 从 <tbody> 中删除每第三行?

javascript - 如何在pm2中部署feathersjs应用程序?