【问题标题】:Error: Type mismatch. Value [00,00,00] does not match type timeofday错误:类型不匹配。值 [00,00,00] 与 timeofday 类型不匹配
【发布时间】:2018-06-08 17:32:52
【问题描述】:

我想从 json 格式的 MySQL 数据创建一个谷歌折线图。 JSON 数据采用以下格式:

{
    "result": [
        {
            "Date": "Dec 17,2017",
            "start_time": "22,08,17",
            "selected_time": "[00,00,00]"
        },
        {
            "Date": "Dec 18,2017",
            "start_time": "21,48,57",
            "selected_time": "[00,00,00]"
        },
        {
            "Date": "Dec 21,2017",
            "start_time": "13,23,05",
            "selected_time": "[00,00,00]"
        },
        {
            "Date": "Dec 22,2017",
            "start_time": "00,13,33",
            "selected_time": "[00,00,00]"
        },
        {
            "Date": "Dec 23,2017",
            "start_time": "14,48,34",
            "selected_time": "[00,00,00]"
        },
        {
            "Date": "Dec 27,2017",
            "start_time": "19,21,34",
            "selected_time": "[00,00,00]"
        }
    ]
}

下面是我正在做的代码。但它不接受 start_time 和 selected_time 值,因为它给出了不匹配的错误。我在 mysql db 中的所有这些字段都有 varchar 数据类型。

function callbackFuncWithData(json){   

var data = new google.visualization.DataTable(); 

data.addColumn('string', 'Date');
data.addColumn('timeofday', 'start_time');
data.addColumn('timeofday', 'selected_time');

$.each(json, function (key, value) {
$.each(value, function (key, value) {
var temp = [];
temp = value;
                    alert([temp['Date']+" "+temp['start_time']+" "+temp['selected_time']]);
data.addRows([
[ temp['Date'],temp['start_time'],temp['selected_time']]
]);
});
});
var options = {
        tooltip: {
            isHtml: true
        },
        title: 'Trendlines with multiple lines',
        hAxis: {
            title: 'Date',

        },
         vAxis: {
            title: 'Time'

        },
        pointSize: 5,
          series: {
                0: { pointShape: 'circle' },

            }

        };
var chart = new google.visualization.LineChart(document.getElementById('multipleTrendChart'));
   chart.draw(data, options);
    }
        }).fail(function (jq, text, err) {
        console.log(text + ' - ' + err);
            });
        }  
        </script>
    </head>
    <body>
        <div id="multipleTrendChart"></div>
    </body>
    </html>

但它显示此错误“错误:类型不匹配。值 22,08,17 与列索引 1 中的类型 timeofday 不匹配”。 有人请建议我有什么问题。谢谢

【问题讨论】:

  • 构建 json 的代码在哪里? timeofday 应该是一个数组,类似于 --> "start_time": [22,08,17]
  • 我对一列使用了与您描述的相同的格式,但效果不佳。这是 json 数据示例
  • “结果”:[ {“日期”:“2017 年 12 月 17 日”,“开始时间”:“22,08,17”,“选定时间”:“[00,00,00]” },{“日期”:“2017 年 12 月 18 日”,“start_time”:“21,48,57”,“selected_time”:“[00,00,00]”},{“日期”:“12 月 21 日, 2017", "start_time": "13,23,05", "selected_time": "[00,00,00]" },

标签: jquery google-visualization timeofday


【解决方案1】:

如果改变json的格式,应该如下所示,
'timeofday' 的数组周围没有引号

    {
        "Date": "Dec 17,2017",
        "start_time": [22,08,17],
        "selected_time": [00,00,00]
    },

否则,你可以使用以下转换为数组...

$.each(json, function (key, value) {
  data.addRow([
    value.Date,
    value.start_time.split(','),
    JSON.parse(value.selected_time)
  ]);
});

【讨论】:

  • 这是我的 json 数据链接:localhost/capable/v1/getgraphbyselectedtime 如果我提醒这些值,它会给出与您上面提到的相同的格式,但错误仍然是相同的不匹配值。
  • 亲爱的 WhiteHat 关于这个问题还有什么建议吗?
猜你喜欢
  • 2014-11-10
  • 1970-01-01
  • 2013-01-16
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多