getJSON适用于Chrome浏览器,IE浏览器,但不适用于Firefox

时间:2017-09-01 02:07:37

标签: javascript jquery html

以下JavaScript代码适用于Chrome,有时在IE中(将在下面解释),但不适用于Firefox。

不工作我的意思是第一个alert函数内的.getJSON没有执行。控制台中没有消息。

注意:.getJSON检索的文件是包含两个JSON对象数组的文本文件。没关系它有html扩展名。这来自我无法控制的外部系统。

function loadAgentsData(totalRotationTime) {

var rowsPerPage = 20;
var fadeInTime =  300;
var fadeOutTime = 400;

var workgroups = [];
var rawUsers = [];

$.ajaxSetup({ cache: false });    

$.getJSON('JSMemberService.html', function(result) {

    alert('inside first getJSON');

    rawUsers = result.users;
    workgroups = result.workgroups;
    $.getJSON('JSLending.html', function(result) {
        rawUsers.push.apply(rawUsers,result.users);
        workgroups.push.apply(workgroups,result.workgroups);
        $.getJSON('JSESupport.html', function(result) {
            rawUsers.push.apply(rawUsers,result.users);
            workgroups.push.apply(workgroups,result.workgroups);

            // Calculate Workgroups Totals
            var totalWaiting  = 0;
            var totalAnswered = 0;
            var totalReceived = 0;
            for (i in workgroups) {
                totalWaiting  = totalWaiting  + parseInt(workgroups[i].waiting);
                totalAnswered = totalAnswered + parseInt(workgroups[i].answered);
                totalReceived = totalReceived + parseInt(workgroups[i].received);
            }

            $("#wg-waiting").text(totalWaiting);
            $("#wg-answered").text(totalAnswered);
            $("#wg-received").text(totalReceived);

            // Filter out users that are not logged in
            var loggedInUsers = rawUsers.filter(function(item) { return item.logged_in == "1" });

            // Calculate aggregate values for users and have one JSON object per user.
            var users = AggregateUsers(loggedInUsers);

            // Populate the HTML with the users' values

            PopulateUsers(sortedUsers,rowsPerPage,totalRotationTime,fadeInTime,fadeOutTime);


        }); // end of inner getJSON
    }); // end of middle getJSON
}); // end of outer getJSON

} //函数loadAgentsData的结尾

为什么这在Firefox中不起作用? 有趣的是,在开发这个时,我会在本地打开Firefox中的HTML文件(不由IIS提供服务),它运行正常。它不适用于Chrome,因为它不允许ajax本地文件。

现在到IE ... 它可以从一台计算机上完美运行,而不是与另一台具有完全相同版本的IE 11.0.9600.18763的计算机。 在它不起作用的计算机中,控制台抛出错误:Object doesn't support property or method 'filter'。 如何在一台计算机上支持它而不在另一台计算机上支持它?

我删除了filter行,但它仍然不起作用,但现在这是一个HTML问题,我相信。 Waiting,Answered和Received的标签和值都是彼此重叠的!这是HTML:

<div id="averageStatsRow">
<div class="workgroup_title_container">
   <div class="workgroup_title">Average Statistics</div>
</div>
<div id="workgroupLabels" class="label_container">
   <div class="thirds_divider">
      <div class="data_label">Interactions Waiting</div>
   </div>
   <div class="thirds_divider">
      <div class="data_label">Answered</div>
   </div>
   <div class="thirds_divider">
      <div class="data_label">Received</div>
   </div>
</div>
<div id="averageStats">
   <div class="thirds_divider">
      <div class="data_value" id="wg-waiting"></div>
   </div>
   <div class="thirds_divider">
      <div class="data_value" id="wg-answered"></div>
   </div>
   <div class="thirds_divider">
      <div class="data_value" id="wg-received"></div>
   </div>
</div>

我拉着我的头发......

2 个答案:

答案 0 :(得分:0)

这可能是服务器问题,但如果不了解有关配置的更多信息,则很难。我建议在命令行上使用curl来测试JSMemberService.html是否返回正确的JSON内容。

此外,它应附带content-type的响应标头application/json,您可能还需要服务器向响应发送CORs标头。在这种情况下,在文件系统上查看页面而不是由Web服务器提供服务时,您可能会看到不同的行为。

关于三种数据类型的渲染方式,我们需要查看完整的HTML和CSS,我认为你应该制作整个例子的jsbin。

答案 1 :(得分:0)

我的所有Internet Explorer问题都是通过将这一行添加到head

来解决的

<meta http-equiv="X-UA-Compatible" content="IE=edge">

我没有解决我的Firefox问题。