2010-12-03 62 views
0

我試圖繪製一張圖表,其中Google圖表API約7000個字符,但URL只接受2000個字符。不過,我已經讀過POST請求可以支持多達16k個字符,所以我試圖用它來渲染圖表。有一個如何呈現圖形然後將該php文件用作img src的PHP示例,但是如何將我的dataload傳遞到此其他頁面?Google Charts API圖表請求太大

如果我把它作爲一個GET參數在img src中,它將會再次出現太多字符。我讀過,你永遠不應該做一個大於2000個字符的URL,如果你能幫到它,

也許我可以輸出它到一個文件,然後讓它的img php文件在每次請求時都把它拉出來?

如果任何人有任何建議,這將是一個巨大的幫助,

謝謝!

我讀過URL字符限制取決於瀏覽器,IE大約是2000,這是否意味着一個比這更大的字符數的img src將無法在此瀏覽器中正確呈現?或者FF有一個更大的限制,下面的網站說超過10萬,所以它會呈現在FF?

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

回答

0

我剛重新獲取的數據加載與一個單獨的請求,然後使用PHP文件作爲圖像源。

0

使用curl將'GET'請求轉換爲我的代理腳本轉換爲'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; 
    } 
} 

這是一個代理,所以它需要某種訪問控制才能用於生產。