PHP cURL是一個強大的工具,可以用來進行HTTP請求并獲取響應。而當我們需要獲取跨域的JSON數據時,就需要使用JSONP。那么如何使用PHP cURL來獲取JSONP數據呢?下面就為大家詳細介紹一下。
首先,我們需要了解什么是JSONP。JSONP實際上是利用了html中<script>標簽的src屬性可以跨域的特性。我們可以在后端生成一個回調函數,如callback(data),然后將這個函數名(callback)作為請求的參數,服務器端將數據以JavaScript代碼的形式返回給前端,如callback(data)。這樣前端就可以利用這個函數名將返回的數據作為參數傳遞給這個函數,以此完成數據的處理。
// 前端代碼 <script type="text/javascript"> function callback(data) { // 對獲取到的data進行處理 } </script> <script type="text/javascript" src="http://example.com/data.php?callback=callback"></script>
接下來看一下后端代碼,如何用PHP cURL獲取JSONP數據。以下的代碼是向百度地圖API請求天氣數據,并返回JSONP格式的數據。
$url = "http://api.map.baidu.com/telematics/v3/weather"; $city = "北京"; $ak = "your_ak"; $params = http_build_query(array( "location" =>$city, "output"=>"json", "ak"=>$ak )); $url .= "?" . $params; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $result = curl_exec($ch); curl_close($ch); echo "callback(" . $result . ")";
以上代碼向百度地圖API請求天氣數據,并將返回的數據拼接成了JSONP格式返回給前端。其中,http_build_query是將數組轉換成URL查詢參數的函數。curl_setopt設置的選項分別為:設置請求的URL、設置是否返回數據、設置是否返回響應頭。使用curl_exec發送請求后,可以使用curl_close函數關閉連接。
如果你需要進行更多的參數設置,可以參考cURL的官方文檔。
總的來說,使用PHP cURL獲取JSONP數據并不難,在了解JSONP原理和cURL常規用法后,就可以輕松實現。
上一篇java對象和類的例題
下一篇java對象和引用傳遞