Google Charts API图表请求过大

时间:2010-12-03 21:34:25

标签: google-visualization

我正在尝试使用Google Charts API绘制一个大约7000个字符的图表,但该URL只接受2000个字符。但是我已经读过POST请求最多可以支持16k个字符,因此我尝试使用它来渲染图表。有一个PHP示例如何呈现图形然后使用该php文件作为img src,但是如何将我的dataload传递给另一个页面?

如果我把它作为GET参数放在img src本身中,它将会再次出现太多字符。我已经读过,如果你能提供帮助,你永远不应该创建一个超过2000个字符的URL,

也许我可以将它输出到一个文件然后让img php文件让它在每次请求时拉出来?

如果有人有任何建议,那将是一个巨大的帮助,

谢谢!

我已经读过URL字符限制取决于浏览器,IE约为2000,这是否意味着字符数大于此的img src将无法在此浏览器中正确呈现?或者,FF有一个更大的限制,下面的网站说超过100,000,所以它会在FF中呈现吗?

http://www.boutell.com/newfaq/misc/urllength.html

2 个答案:

答案 0 :(得分:0)

我刚刚使用单独的请求获取了数据加载器,然后使用php文件作为图像源。

答案 1 :(得分:0)

使用curl将'GET'请求转换为我的代理脚本,转换为google的'POST'请求。 然后,您只需将您的代理网址替换为您应用中的Google。

function getChartProxy()
{
    if(isset($_GET) && count($_GET)){
       ob_clean();//remove any header or error messages from the output buffer
       //example for testing
       // $url = "http://chart.apis.google.com/chart?cht=p&chs=250x100&chd=t:40,30,20&chl=Hispanic|NonHispanic|Incomplete";

       $getData = http_build_query($_GET);
       $url = 'http://chart.apis.google.com/chart';         
       $ch = curl_init();

       curl_setopt ($ch, CURLOPT_URL, $url);
       curl_setopt ($ch, CURLOPT_HEADER, 0);

       curl_setopt($ch, CURLOPT_POST, 1);
       curl_setopt($ch, CURLOPT_POSTFIELDS,$getData);
       ob_start();

       curl_exec ($ch);
       curl_close ($ch);
       $bytes = ob_get_contents();

       ob_end_clean();    
       header('Content-type: image/png');
       echo $bytes;
    }
}

这是一个代理,因此需要某种访问控制才能在生产中使用。