jquery - 脚本438 : Object doesn't support property or method 'values'

标签 jquery json ajax sharepoint-2013 chart.js

我有一个从 SharePoint 列表创建的图表,它在 Chrome 中工作,但在 IE 11 中不起作用。当我在 IE 11 中调试时,收到错误 SCRIPT438:对象不支持属性或方法“值”。我对 JavaScript 还很陌生。

任何人都可以告诉我什么可能是修复或我缺少什么

我正在使用 Chart.js 和 ajax。

<script type="text/javascript" src="/sites/carm/Shared%20Documents/Chart.min.js"></script>
<script type="text/javascript" src="/sites/carm/Shared%20Documents/jquery-1.12.4.min.js"></script>

<script type="text/javascript">

$.ajax({
        url: "/sites/carm/_api/web/lists/getbytitle('ATO%20Conditions')/items?$select=ID,Title,m4gs&$top=5000",
        type: "GET",
        headers: {
            "accept": "application/json;odata=verbose",
        },
        success: function(data) {

            if (data.d.results.length > 0) {
                var inactiveSet = {};
                var activeSet = {};
                var otherSet = {};
                var totalActive = 0;
                var totalInActive = 0;
                var totalOther = 0;
                var initZero = 0;

                $.each(data.d.results, function(index, item) {
                    if (item.m4gs === "Completed") {
                        totalInActive++
                        if (item.Title in inactiveSet) {

                            inactiveSet[item.Title]++;
                        } else {
                            inactiveSet[item.Title] = 1;
                            activeSet[item.Title] = initZero;
                            otherSet[item.Title] = initZero;
                        }
                    } else if (item.m4gs === "Active") {

                        totalActive++
                        if (item.Title in activeSet) {

                            activeSet[item.Title]++;

                        } else {
                            inactiveSet[item.Title] = initZero;
                            activeSet[item.Title] = 1;
                            otherSet[item.Title] = initZero;
                        }
                    } else {
                        totalOther++
                        if (item.Title in otherSet) {
                            otherSet[item.Title]++;
                        } else {
                            inactiveSet[item.Title] = initZero;
                            activeSet[item.Title] = initZero;
                            otherSet[item.Title] = 1;
                        }
                    }
                });
            }
            var inactiveOrdered = {};
            var activeOrdered = {};
            var otherOrdered = {};

            Object.keys(activeSet).sort().forEach(function(key) {
                activeOrdered[key] = activeSet[key];
            });

            Object.keys(inactiveSet).sort().forEach(function(key) {
                inactiveOrdered[key] = inactiveSet[key];
            });

            Object.keys(otherSet).sort().forEach(function(key) {
                otherOrdered[key] = otherSet[key];
            });

            var ctx = document.getElementById("myChart").getContext("2d");

            var data = {
                labels: Object.keys(activeOrdered),
                datasets: [{
                        label: "Active",
                        fillColor: "steelblue",
                        data: Object.values(activeOrdered)
                    },
                    {
                        label: "Completed",
                        fillColor: "orange",
                        data: Object.values(inactiveOrdered)
                    }
                ]
            };
            ....    
</script>

错误来自于以

开头的行
...
var data = {
            labels: Object.keys(activeOrdered),
...

最佳答案

发生此错误的原因是 Internet Explorer 不支持 Object.values()

参见browser compatibility对于Object.values()

这是一个解决方法,您可以使用它......

data: Object.keys(activeOrdered).map(function(key) {return activeOrdered[key];})

还有...

data: Object.keys(inactiveOrdered).map(function(key) {return inactiveOrdered[key];})

关于jquery - 脚本438 : Object doesn't support property or method 'values' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44091075/

相关文章:

javascript - 需要有关 pushState 和 onpopstate 的建议

javascript - 表格顶部和底部的水平滚动条

javascript - ReactJS - 将 json 插入状态数组

php - Google Translate API 和字符编码

javascript - 使用 TypeScript 将 JSON(来自 Sentry)转换为 HTML

javascript - 使用Php、json、JS和JSON获取json数组创建产品索引问题

javascript - 如何重写这段代码?

javascript - 有没有办法在关闭浏览器时终止 session ?我使用了 onunload 和 onbeforeunload 事件。但它不起作用

jquery - 如何滚动绝对div?

javascript - 如何在 jQuery Ajax 成功回调中处理我的 JSON 数据?