Я пытаюсь отобразить диаграмму аннотаций Google с помощью Visual Studio, вызывая веб-метод через данные ajax и JSON. Я пробовал много разных форматов, но столбцу date
, похоже, не нравится формат даты, который я передаю.
Когда я запускаю это, результат json.parse, созданный из моих тестовых данных, выглядит следующим образом:
[
["Thu Dec 24 2015 18:00:00 GMT-0600 (Central Standard Time)",1094,"0","test"],
["Wed Dec 16 2015 18:00:00 GMT-0600 (Central Standard Time)",4000,"2","test"],
["Mon Dec 14 2015 18:00:00 GMT-0600 (Central Standard Time)",7888,"4","test"],
["Sun Dec 13 2015 18:00:00 GMT-0600 (Central Standard Time)",10804,"0",""],
["Wed Dec 09 2015 18:00:00 GMT-0600 (Central Standard Time)",3878,"0",""],
["Tue Dec 08 2015 18:00:00 GMT-0600 (Central Standard Time)",1312,"0",""],
["Mon Dec 07 2015 18:00:00 GMT-0600 (Central Standard Time)",2565,"1","test"]
]
И, наконец, я получаю сообщение об ошибке:
Ошибка выполнения JavaScript: несоответствие типов. Значение Чт, 24 декабря 2015 г., 18:00:00 GMT-0600 (центральное стандартное время) не соответствует дате типа в индексе столбца 0.
Я искал решение в течение 2 дней, но безуспешно.
<script type="text/javascript">
function drawAnnoChart() {
var dUser = document.getElementById('MainContent_lblUsername').innerHTML;
var dUnit = document.getElementById('MainContent_hfUnitChoice').value;
var data = new google.visualization.DataTable();
dateFormatter = new google.visualization.DateFormat({ formatType: 'short' });
data.addColumn('date', 'Date');
data.addColumn('number', 'Distance');
data.addColumn('string', 'Felt');
data.addColumn('string', 'Notes');
$.ajax({
type: "POST",
url: "me.aspx/GetSwimData",
data: JSON.stringify({ 'dUser': dUser, 'dUnit': dUnit }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var dstring = '';
for (var i = 0; i < r.d.length; i++) {
r.d[i][0] = '"' + new Date(r.d[i][0]) + '"';
r.d[i][2] = '"' + r.d[i][2] + '"';
r.d[i][3] = '"' + r.d[i][3] + '"';
if (i == 0) { dstring = '[' + r.d[i] + ']'; }
else { dstring = dstring + ',' + '[' + r.d[i] + ']'; }
}
dstring = '[' + dstring + ']';
data.addRows(JSON.parse(dstring));
},
failure: function (r) {
alert(r);
},
error: function (r) {
alert(r);
}
});
var chart = new google.visualization.AnnotationChart(document.getElementById('chart_div'));
var options = {
displayAnnotations: true
};
chart.draw(data, options);
}
</script>