पोस्ट अनुरोध

ब्राउज़र में अपने चार्ट को यूआरएल के तौर पर दिखाने या <img> टैग को जीईटी अनुरोध कहा जाता है. जीईटी अनुरोध करना आसान है, लेकिन जीईटी यूआरएल में 2K वर्ण ही हो सकते हैं. अगर आपके पास इससे ज़्यादा डेटा है, तो क्या होगा?

सौभाग्य से, चार्ट API 16K तक के चार्ट अनुरोधों के लिए HTTP POST का समर्थन करता है. POST का इस्तेमाल करने के बाद, यह समझौता और मुश्किल हो जाता है.

यहां सबसे बुनियादी तरह के POST अनुरोध का एक उदाहरण दिया गया है: <form> एलिमेंट का इस्तेमाल करना:

यह चार्ट असल में <iframe> में होस्ट किया गया पेज है. फ़ॉर्म कोड यहां दिया गया है:

<form action='https://chart.googleapis.com/chart' method='POST'>
  <input type="hidden" name="cht" value="lc"  />
  <input type="hidden" name="chtt" value="This is | my chart"  />
  <input type='hidden' name='chs' value='600x200' />
  <input type="hidden" name="chxt" value="x,y" />
  <input type='hidden' name='chd' value='t:40,20,50,20,100'/>
  <input type="submit"  />
</form>

POST के मान्य अनुरोध का जवाब, PNG चार्ट और GET अनुरोध के रिस्पॉन्स के जैसा होता है.

POST का इस्तेमाल कई तरह से किया जा सकता है और उन सभी के लिए पेज कोड या सर्वर होस्ट करने वाले पेज पर कोडिंग की ज़रूरत पड़ती है. POST का इस्तेमाल करने के लिए, आपको हर चार्ट के लिए एक अलग पेज बनाना होगा. इसके अलावा, <iframe> का इस्तेमाल करके उसे अपने मुख्य पेज पर एम्बेड करना होगा या लिंक करना होगा था. इसके अलावा, उन्हें <img> टैग के तौर पर जोड़ना होगा, जैसा कि नीचे दिखाया गया है.

JavaScript और PHP, दोनों के साथ POST का इस्तेमाल करने के उदाहरण यहां दिए गए हैं.

पोस्ट अनुरोध के लिए JavaScript का इस्तेमाल करना

JavaScript POST का अनुरोध करने का सबसे आसान तरीका यह है कि ऐसा पेज बनाएं जिसमें चार्ट के डेटा वाला फ़ॉर्म <input> एलिमेंट में होस्ट हो. साथ ही, अनुरोध करने के बाद पेज को उसके onLoad() हैंडलर में पोस्ट करें. इसके बाद, पेज को चार्ट PNG की जगह ले लिया जाएगा. इस चार्ट को होस्ट करने वाले पेज में <iframe> का इस्तेमाल करके यह पेज शामिल होना चाहिए. यहां चार्ट पेज का कोड दिया गया है:

post_chart.html

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script type='application/javascript'>
    // Send the POST when the page is loaded,
    // which will replace this whole page with the retrieved chart.
    function loadGraph() {
      var frm = document.getElementById('post_form');
      if (frm) {
       frm.submit();
      }
    }
  </script>
  </head>
  <body onload="loadGraph()">
    <form action='https://chart.googleapis.com/chart' method='POST' id='post_form'>
      <input type='hidden' name='cht' value='lc'/>
      <input type='hidden' name='chtt' value='This is | my chart'/>
      <input type='hidden' name='chs' value='300x200'/>
      <input type='hidden' name='chxt' value='x'/>
      <input type='hidden' name='chd' value='t:40,20,50,20,100'/>
      <input type='submit'/>
    </form>
  </body>
</html>

अगर आप <form> एलिमेंट का इस्तेमाल करते हैं, तो आपको अपनी स्ट्रिंग को यूआरएल-एन्कोड करने की ज़रूरत नहीं है (हालांकि, आपको विशेष वर्णों का इस्तेमाल करना होगा, जैसे चार्ट के शीर्षकों में नई लाइन शुरू करने के लिए |).

इसके बाद, इस चार्ट को अपने होस्ट पेज में <iframe> का इस्तेमाल करके, किसी दूसरे पेज पर लोड किया जा सकता है, जैसे:

another_page.html

<iframe src="post_chart.html" width="300" height="200"></iframe>

पोस्ट अनुरोध के लिए PHP का इस्तेमाल करना

सर्वर-साइड वाली ज़्यादातर भाषाएं, POST अनुरोधों के साथ काम करती हैं. यहां एक उदाहरण है, जिसमें PHP का इस्तेमाल करके, पोस्ट अनुरोध करने का तरीका बताया गया है. इस उदाहरण में एक ऐसे पेज के बारे में बताया गया है जो 150 रैंडम वैल्यू वाला लाइन चार्ट जनरेट करता है. इसका इस्तेमाल करने के लिए, आपको $chart कैटगरी को अपने हिसाब से बनाना होगा, ताकि आप उसमें अपनी वैल्यू शामिल कर सकें.

chartserver-image.php

<?php
  // Create some random text-encoded data for a line chart.
  header('content-type: image/png');
  $url = 'https://chart.googleapis.com/chart';
  $chd = 't:';
  for ($i = 0; $i < 150; ++$i) {
    $data = rand(0, 100000);
    $chd .= $data . ',';
  }
  $chd = substr($chd, 0, -1);

  // Add data, chart type, chart size, and scale to params.
  $chart = array(
    'cht' => 'lc',
    'chs' => '600x200',
    'chds' => '0,100000',
    'chd' => $chd);

  // Send the request, and print out the returned bytes.
  $context = stream_context_create(
    array('http' => array(
      'method' => 'POST',
      'content' => http_build_query($chart))));
  fpassthru(fopen($url, 'r', false, $context));
?>

इस चार्ट को एम्बेड करना, JavaScript के उदाहरण से ज़्यादा आसान है. ऐसा इसलिए, क्योंकि आप बस <img> टैग के साथ अपने पोस्ट पेज पर ले जा सकते हैं, जैसा कि यहां दिखाया गया है:

another_page.html

<img width='600' height='200' src='chartserver-image.php'>