jQuery中常用getJSON來呼叫並取得遠端的JSON字串,將其轉換為JSON對象,如果成功,則執行回呼函數。原型如下:
jQuery.getJSON( url, [data], [callback] ) 跨域載入JSON資料。
url: 發送請求的位址
data : (可選) 待發送key/value參數
callback: (可選) 載入成功時的回呼函數
主要用於客戶端取得伺服器JSON資料。簡單範例:
伺服器腳本,回傳JSON資料:
// $.getJSON.php
// $.getJSON.php
$arr =array("name"=>"zhangsan", "age"=>20);
$jarr=json_encode($arr); echo $jarr;
注意兩點:第一:在傳回客戶端之前,先用PHP函數json_encode將要傳回的資料進行編碼。第二:返回客戶端用的是echo,而不是return。
程式碼如下:
由於在PHP中是用JSON編碼傳回值,所以這裡必須用getJSON去呼叫PHP文件,以便取得資料。同時可以注意到,經由getJSON得到的資料已經變成了一個物件數組,可以用response.name,response.age很直觀的獲取回傳值。
jquery提供了$.getJSON的方法,讓我們可以實現跨域ajax請求,但jqueryAPI上的內容實在太少,如何用$.getJSON,請求網站應該返回怎樣的資料庫才能讓$.getJSON取得到,下面我就用一個實際例子來說明下。
後端是用php的,以下程式碼主要實現的一個功能就是提供一個預約登記的接口,需要傳入的資料分別有:使用者姓名、聯絡電話和地址:
/*預約登記執行介面/
/*預約登記執行介面/
case🎜>case "yuyue_interface":
$name = trim($_GET['name']);
$phone = trim($_GET['phone']);
$addr = trim($_GET[' addr']);
$dt = date("Y-m-d H:i:s");
$cb = $_GET['callback'];
if($name == "" || $name == NULL){
echo $cb."({code:".json_encode(1)."})";
}elseif($phone == "" || $phone == NULL ){
echo $cb."({code:".json_encode(2)."})";
}elseif($addr == "" || $addr == NULL){
echo $cb."({code:".json_encode(3)."})";
}else{
$db->execute("insert into tb_yuyue (realname,telphone,danwei,dt,ischeck ) values ('$name','$phone','$addr','$dt',0)");
echo $cb."({code:".json_encode(0)."}) ";
}
exit;
break;
接著就是前端的處理了:
程式碼如下:
$(document).ready(>
$(document).ready(function(){ //以下3個為預約登記所需的參數
var name = "name"; //varchar類型,長度最多為8位元(4個漢字)
var phone = "phone"; // varchar類型,長度為11位元
var addr = "addr"; //varchar類型,長度最多為500位元(250個漢字)
$.getJSON("http://請求網址/data. php?ac=yuyue_interface&name=" name "&phone=" phone "&addr=" addr "&callback=?", function(data){
if(data.code==1){
//自訂程式碼
alert("姓名不能為空白");
}else if(data.code==2){
//自訂程式碼
alert("手機不能為空白");
}else if(data.code==3){
//自訂程式碼
alert("所在單位不能為空");
}else{
alert("預約成功");
}
});
});
要注意的是,在後端php程式碼裡,必須把傳遞進來的" &callback=? "也輸出來,如:
$cb = $_GET['callback']; 🎜>echo $cb."({code:".json_encode(4)."})";
以上就是一個簡單的$.getJSON試驗,透過這個試驗,我們可以學到如何用$.getJSON,也能學到如何做一個介面讓別人跨域請求。