Javascript 将日期从webmethod传递到Google注释图表
我试图使用VisualStudio显示google注释图表,通过ajax和JSON数据调用web方法。我尝试了许多不同的格式,但是Javascript 将日期从webmethod传递到Google注释图表,javascript,visual-studio,google-visualization,Javascript,Visual Studio,Google Visualization,我试图使用VisualStudio显示google注释图表,通过ajax和JSON数据调用web方法。我尝试了许多不同的格式,但是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 S
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运行时错误:类型不匹配。价值至2015年12月24日
18:00:00 GMT-0600(中央标准时间)与中的类型日期不匹配
列索引0
我一直在寻找一个解决方案,两天没有运气
<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>
函数drawAnnoChart(){
var dUser=document.getElementById('MainContent\u lblUsername').innerHTML;
var dUnit=document.getElementById('MainContent\u hfUnitChoice')。值;
var data=new google.visualization.DataTable();
dateFormatter=new google.visualization.DateFormat({formatType:'short'});
data.addColumn('date','date');
data.addColumn('number','Distance');
data.addColumn('string','feel');
data.addColumn('string','Notes');
$.ajax({
类型:“POST”,
url:“me.aspx/GetSwimData”,
数据:JSON.stringify({'dUser':dUser'dUnit':dUnit}),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(r){
var-dstring='';
对于(变量i=0;i
只需将日期正确格式化,这样的方式应该可以
google.charts.load('current',{'packages':['annotationchart']});
google.charts.setOnLoadCallback(drawAnnoChart);
函数drawAnnoChart(){
var data=new google.visualization.DataTable();
data.addColumn('date','date');
data.addColumn('number','Distance');
data.addColumn('string','feel');
data.addColumn('string','Notes');
var dataArr=[
[“2015年12月24日星期四18:00:00 GMT-0600(中央标准时间)”,1094,“0”,“测试”],
[“2015年12月16日星期三18:00:00 GMT-0600(中央标准时间)”,4000,“2”,“测试”,
[“2015年12月14日星期一18:00:00 GMT-0600(中央标准时间)”,7888,“4”,“测试”],
[“2015年12月13日星期日18:00:00 GMT-0600(中央标准时间)”,10804,“0”,
[“2015年12月9日星期三18:00:00 GMT-0600(中央标准时间)”,3878,“0”,
[“2015年12月8日星期二18:00:00 GMT-0600(中央标准时间)”,1312,“0”和“,”,
[“2015年12月7日星期一18:00:00 GMT-0600(中央标准时间)”,2565,“1”,“测试”]
];
对于(变量i=0;i
尝试返回如下内容:
[
["Date(2015,12,24,18,0,0)",1094,"0","test"],
["Date(2015,12,16,18,0,0)",4000,"2","test"],
["Date(2015,12,14,18,0,0)",7888,"4","test"],
["Date(2015,12,13,18,0,0)",10804,"0",""],
["Date(2015,12,9,18,0,0)",3878,"0",""],
["Date(2015,12,8,18,0,0)",1312,"0",""],
["Date(2015,12,7,18,0,0)",2565,"1","test"]
]
多亏了这两个答案。我通过改变填充数据表的方式解决了这个问题。我使用datatable.setValue方法单独设置单元格的值 格式化和重新排序prosethat不起作用。它将一个“无效日期”值传递给datatable,然后datatable将创建一个“无效字符”错误。