Javascript 将日期从webmethod传递到Google注释图表

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

我试图使用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 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将创建一个“无效字符”错误。