以下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>
我拉着我的头发......
答案 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问题。