首頁 > web前端 > js教程 > 主體

關於jQuery用$.ajax或$.getJSON實作跨域取得JSON資料的程式碼

小云云
發布: 2018-02-02 13:39:27
原創
1698 人瀏覽過

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

本文主要和大家介紹JQuery用$.ajax或$.getJSON跨域獲取JSON資料的實現代碼,需要的朋友可以參考下,希望對大家有用。

JQuery取得同域的JSON資料

先引用jQuery庫檔:

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庫檔:

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( ","pass":123456})

說明,jQuery傳入值每次都不一樣。

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

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

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

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

總結

透過本文介紹,大家都應該明白了,要jQuery跨域讀取JSON數據,首先需要在伺服器端建構一個特殊的JSON字串,否則是讀取不了的,好在,構造方法十分簡單,文中例子一看便懂。

jQuery + Ajax 取得跨域JSON資料

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

首先引用jQuery庫檔案:

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 。

相關推薦:

html中透過JS取得JSON資料並載入實例分享

JS如何取得Json數組裡數組長度的實例

ajax跨域請求的解決方案:使用JSONP取得JSON資料


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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!