今天我們來講一下PHP中的JSONP實例,相信很多PHP開發者們都有使用過JSONP。那么,為什么使用JSONP呢?說到這里,我想先舉個例子:
假設現在我們需要在前端頁面上獲取服務端數據,而這個服務端數據來源可以是同域或者跨域,如果同域的話,我們可以通過AJAX來獲取數據,但是如果是跨域的情況下,我們就需要使用JSONP了。
那么下面我們來看一下具體的JSONP實例:
<script> function getJsonpData(){ var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'http://www.example.com/getJsonpData.php?callback=getData'; document.getElementsByTagName('head')[0].appendChild(script); } function getData(data) { alert(data); } </script>
在上面的代碼中,我們定義了一個getJsonpData()的函數,這個函數會動態創建一個script標簽,script標簽的src屬性指向服務端的相應地址,同時在后面加上callback參數名和我們自己定義的函數名getData。
在服務端,我們需要返回一個JSON格式的數據,在返回數據之前,需要通過GET方法獲取到callback的參數名,然后把這個參數名和數據用括號括起來返回,就像下面這樣:
$callback = $_GET['callback']; $data = array('name' => 'Jack', 'age' => 18, 'sex' => 'male'); echo $callback . '(' . json_encode($data) .')';
這樣就完成了一個簡單的JSONP的實例,我們在前端調用getJsonpData()函數時,就會動態的創建一個script標簽,這個標簽的src屬性指向服務端地址,并且攜帶了我們定義的callback參數名以及對應的函數名。
服務端在接到請求后,獲取到callback參數名,然后把數據用括號括起來返回,這樣瀏覽器就會把返回的數據當做JavaScript代碼去執行,同時會執行我們定義的函數,從而完成實時更新數據的效果。
需要注意的是,在使用JSONP時,服務端返回的數據格式必須是JSON格式,而且必須用callback參數名和我們定義的函數名來括起來返回。
這就是一個基本的JSONP實例,簡單而實用。
上一篇php gtk 使用