首頁  >  文章  >  web前端  >  JQuery用$.ajax或$.getJSON跨域取得JSON資料的實作碼

JQuery用$.ajax或$.getJSON跨域取得JSON資料的實作碼

韦小宝
韦小宝原創
2018-01-15 11:31:161698瀏覽

這篇文章主要介紹了JQuery用$.ajax或$.getJSON跨域獲取JSON資料的實現代碼,對jquery不熟悉的朋友可以參考下本篇文章

#透過JQuery可以跨域獲取JSON數據,但必須弄清楚的是,JQuery不可以跨域獲取任意JSON格式的數據,必須要透過服務端輸出特定的針對JQuery跨域讀取的JSON數據。你可能目前對此仍然毫無了解,沒關係,本文將以最簡單易懂的方式介紹這個技術,相信人人都容易讀懂,並且能夠實際應用。

JQuery取得同域的JSON資料

首先引用jQuery庫檔:

0963302f2adc921bcb6a2073b085db3f2cacc6d41bbb37262a98f745aa00fbf0

jQuery程式碼:

var url="http://localhost:8000/user.php";
$(function(){
 $.getJSON(url,function(data){
 alert (data.name);
})
});

伺服器程式碼(PHP):

<?php 
header(&#39;Content-Type:text/html;Charset=utf-8&#39;); 
$arr = array( 
 "name" => "xiaoming", 
 "pass" => "123456"
); 
echo json_encode($arr); 
?>


伺服器回傳字串

{"name":"xiaoming","pass" :123456}

JQuery取得跨域的JSON資料

首先引用jQuery庫檔:

e4140e42431a616a1bd73031bde0de612cacc6d41bbb37262a98f745aa00fbf0

jQuery程式碼:

var url="http://localhost:8000/user.php?jsoncallback=?";
$(function(){
 $.getJSON(url,function(data){
 alert (data.name);
})
});

伺服器程式碼(PHP):

<?php 
header(&#39;Content-Type:text/html;Charset=utf-8&#39;); 
$arr = array( 
 "name" => "xiaoming", 
 "pass" => "123456"
); 
echo $_GET[&#39;jsoncallback&#39;]."(".json_encode($arr).")"; 
?>

伺服器傳回字串(需要傳入參數「jsoncallback」):

jQuery19003894091040769696_1505708469340({"name":"xiaoming","pass":1234569340({"name":"xiaoming","pass":123456)

)

##(##cc":123456):"xi說明,jQuery傳入值每次都不一樣。

JQuery取得同域和跨域JSON資料的差異

#從上述兩個例子看到,JQuery取得同域和跨域JSON資料的差異有兩點:

1)jQuery寫法不同,跨域時要多加一個參數“jsoncallback=?”

2)伺服器端傳回字串的寫法不同,跨域時需要用到“ 'jsoncallback'」的傳入值,建構的字串格式是:jsoncallback傳入值(原JSON字串),注意要用括號把原JSON字串包住。

總結

透過本文介紹,大家都應該明白了,要jQuery跨域讀取JSON數據,首先需要在伺服器端建構一個特殊的JSON字串,否則是讀取不了的,好在,

建構方法十分簡單,文中例子一看便懂。

jQuery + Ajax 取得跨域JSON資料

前面的範例用的是$.getJSON 來取得跨域JSON數據,其實我們用$.ajax 的方法也同樣可以的。

首先引用jQuery庫檔案:

d182920226eca7d954e1ec536e9710db 2cacc6d41bbb37262a98f745aa00fbf0

jQuery程式碼:

<script type="text/javascript"> 
$(function(){ 
 $.ajax({ 
 type: &#39;get&#39;, 
 url: &#39;http://localhost:8000/user.php?jsoncallback=?&#39;, 
 dataType: &#39;jsonp&#39;, 
 jsonp: "jsoncallback", 
 success: function(data) { 
  alert("用户名:"+ data.name+" 密码:"+ data.pass); 
 }
 }); 
}) 
</script>

特別注意,dataType 是jsonp 而不是json 。

相關推薦:

JavaScript資料結構之單鍊錶與循環鍊錶實例分享

JavaScript的setter與getter詳解

### #########javascript修改瀏覽器title方法實例分享#######

以上是JQuery用$.ajax或$.getJSON跨域取得JSON資料的實作碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn