Google visualization google chart Json响应在1秒内,但在30秒后仍会超时,并且没有;“在例外情况下暂停”;

Google visualization google chart Json响应在1秒内,但在30秒后仍会超时,并且没有;“在例外情况下暂停”;,google-visualization,Google Visualization,我已经在各种星座中测试了这段代码,其中只有一个星座给了我一个我还无法追踪的错误。也许有更多谷歌可视化经验的人可以看到这个问题。在这种情况下,获取json响应,然后我得到一个令牌错误,错误消息中没有标识令牌,“错误时暂停”不会在我的js或外部js中的任何位置暂停。然后,30秒后。确实调用了我的回调,但错误设置为超时(查询中的错误) 这里是您也可以在不使用SSL的情况下测试的URL 下面是我的客户端js,它可以在几种场景下工作 var图表选项={ 曲线类型:“无”, //宽度:1200, 身高:

我已经在各种星座中测试了这段代码,其中只有一个星座给了我一个我还无法追踪的错误。也许有更多谷歌可视化经验的人可以看到这个问题。在这种情况下,获取json响应,然后我得到一个令牌错误,错误消息中没有标识令牌,“错误时暂停”不会在我的js或外部js中的任何位置暂停。然后,30秒后。确实调用了我的回调,但错误设置为超时(查询中的错误)

这里是您也可以在不使用SSL的情况下测试的URL

下面是我的客户端js,它可以在几种场景下工作

var图表选项={
曲线类型:“无”,
//宽度:1200,
身高:400,
变量:{maxValue:10,标题:'kWh/4(15分钟)},
哈克斯:{title:'Time'},
标题:“实时生产日志”,
标题位置:'out',
titleTextStyle:{fontSize:14,textIndent:10},
字体大小:12
};
load(“可视化”、“1”、{packages:[“corechart”]});
setOnLoadCallback(drawChart);
var_图;
函数绘图图(){
//获取GChart数据
var query=new google.visualization.query('https://cio-services.eu/demoOe2/Api/Insight/GetESiteEuoChart/?viewFlag=1&eSiteKid=4b92d450-b29d-47c0-943b-00890f56caf2&periodMin=7200&keyProp=KW15’;
//设置查询参数
//setQuery('select1,2');
查询发送(drawTable);
}
功能绘图表(响应){
//错误检查
if(response.isError()){
警报('查询中的错误:'+response.getMessage()+'+response.getDetailedMessage());
返回;
}
//将响应转换为JSON字符串
var googleDataQuery=response.getDataTable().toJSON();
//将JSON转换为google数据表
var convertedData=new google.visualization.DataTable(googleDataQuery,0.5);
//初始化特定的数据表子集视图并存储到变量中
var view=newgoogle.visualization.DataView(convertedData);
_绘制(视图、图表选项);
}
$(函数(){
_chart=新的google.visualization.LineChart(document.getElementById('chart_div');
});

好的,这里有一点神奇之处,需要仔细阅读文档才能理解

JSON响应格式

如果请求包含“X-DataSource-Auth”头,则默认响应格式为JSON,否则为JSONP。注意,GoogleChart客户端实际上支持JSON和JSONP的修改版本;如果您正在使用Java或Python助手库,它们将为您提供适当的代码;如果您是手工解析响应,请参阅下面的JSON修改 发生的情况是:

如果您提供的目标域在任何方面与主域不同(甚至是不同的端口),那么google visualization决定删除“X-DataSource-Auth”头属性,从而触发客户端期望jsonP而不是json。显然,在这些情况下,RequestID也始终为零。在任何情况下,这意味着您不能简单地为CORS和非CORS访问重用API

只要看一下http请求头就知道了。如果Host:和Referer:属性在任何方面都不同,那么返回的不是纯json,而是如下所示:

string returnVal=“google.visualization.Query.setResponse(“+myvalidpurejson+”)

详情如下:


GG

连接正在正确关闭,所以不是这样:-(在chrome、firefox、ie10中也有同样的错误,ie10告诉我SCRIPT1004:预期的“;”GeteSiteuOchart,第1行字符11。什么?JSFiddle:JSFiddle.net/GGleGrand/44SD9 google visualization可能对我在这里使用的CORS的合法使用有问题。我仍然无法确定js调试器中的异常。看起来像是一个eval错误。)(没有引发异常)那么我如何让MVC WebApi格式化程序在不创建自定义格式化程序的情况下在json(jsonp?)周围添加额外的参数。当前使用:return Request.CreateResponse(HttpStatusCode.OK,chart,“application/json”);仍然存在相同的问题:-(在更改返回格式后,现在看起来像:({“version\”:“0.6\”,“reqId”)\“:\“0\”、\“status\”:\“…”)和我所有的控制台错误都消失了:没有异常,没有错误,仍然是超时错误。等等!为什么我的tqx=reqId%3A0在这里总是零?在我的本地测试机上它总是非零。有什么不对劲。有什么想法吗?可在:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">

    var chartOptions = {
        curveType: 'none',
        //width: 1200,
        height: 400, 
        vAxis: { maxValue: 10, title: 'kWh/4 (15 min)' },
        hAxis: { title: 'Time' },
        title: 'Live production log',
        titlePosition: 'out',
        titleTextStyle: { fontSize: 14, textIndent: 10 },
        fontSize: 12
    };

    google.load("visualization", "1", { packages: ["corechart"] });
    google.setOnLoadCallback(drawChart);
    var _chart;

    function drawChart() {

        //GET GChart data           
        var query = new google.visualization.Query('https://cio-services.eu/demoOe2/Api/Insight/GetESiteEuoChart/?viewFlag=1&eSiteKid=4b92d450-b29d-47c0-943b-00890f56caf2&periodMin=7200&keyProp=KW15');

        //set query parameters
        //query.setQuery('select 1, 2');

        query.send(drawTable);
    }

    function drawTable(response) {
        //error checking
        if (response.isError()) {
            alert('Error in query: ' + response.getMessage() + '' + response.getDetailedMessage());
            return;
        }

        //convert response to JSON string
        var googleDataQuery = response.getDataTable().toJSON();

        //Convert JSON to google Data table
        var convertedData = new google.visualization.DataTable(googleDataQuery, 0.5);

        //Initialize a specific data table sub set view and store into a variable  
        var view = new google.visualization.DataView(convertedData);

        _chart.draw(view, chartOptions);
    }

    $(function () {     
        _chart = new google.visualization.LineChart(document.getElementById('chart_div'));
    });

</script>