學習JSONP
導讀 | JSON(JavaScript Object Notation, JS 物件簡譜) 是一種輕量級的資料交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率。 |
Jsonp(JSON with Padding) 是 json 的一種"使用模式",可以讓網頁從別的域名(網站)那獲取資料,即跨域讀取資料。
為什麼我們從不同的域(網站)訪問資料需要一個特殊的技術( JSONP )呢?這是因為同源策略。
同源策略,它是由 Netscape 提出的一個著名的安全策略,現在所有支援 JavaScript 的瀏覽器都會使用這個策略。
JSONP 應用
1. 服務端 JSONP 格式資料
如客戶想訪問 : probe.com/try/ajax/jsonp.php?jsoncallback=callbackFunction。
假設客戶期望返回資料:["customername1","customername2"]。
真正返回到客戶端的資料顯示為: callbackFunction(["customername1","customername2"])。
服務端檔案 jsonp.php 程式碼為:
jsonp.php 檔案程式碼
<?php header('Content-type: application/json'); //獲取回撥函式名 $jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']); //json資料 $json_data = '["customername1","customername2"]'; //輸出jsonp格式的資料 echo $jsoncallback . "(" . $json_data . ")"; ?>
2. 客戶端實現 callbackFunction 函式
<script type="text/javascript"> function callbackFunction(result, methodName) { var html = '<ul>'; for(var i = 0; i < result.length; i++) { html += '<li>' + result[i] + '</li>'; } html += '</ul>'; document.getElementById('divCustomers').innerHTML = html; } </script>
頁面展示
<div id="divCustomers"></div>
客戶端頁面完整程式碼
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JSONP 例項</title> </head> <body> <div id="divCustomers"></div> <script type="text/javascript"> function callbackFunction(result, methodName) { var html = '<ul>'; for(var i = 0; i < result.length; i++) { html += '<li>' + result[i] + '</li>'; } html += '</ul>'; document.getElementById('divCustomers').innerHTML = html; } </script> <script type="text/javascript" src="linuxprobe.com/try/ajax/jsonp.php?jsoncallback=callbackFunction"></script> </body> </html>
jQuery 使用 JSONP
以上程式碼可以使用 jQuery 程式碼例項:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JSONP 例項</title> <script src=" </head> <body> <div id="divCustomers"></div> <script> $.getJSON("linuxprobe.com/try/ajax/jsonp.php?jsoncallback=?", function(data) { var html = '<ul>'; for(var i = 0; i < data.length; i++) { html += '<li>' + data[i] + '</li>'; } html += '</ul>'; $('#divCustomers').html(html); }); </script> </body> </html>
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2785837/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師web前端學習路線分享Jsonp詳解程式設計師Web前端JSON
- JSONPJSON
- 通過「百度搜尋」來學習Jsonp,Promise,bind,apply,debounceJSONPromiseAPP
- 學習AJAX必知必會(5)~同源策略、解決跨域問題(JSONP、CORS)跨域JSONCORS
- JSONP 用法JSON
- JSONP原理JSON
- sencha touch jsonpJSON
- JSONP的例子JSON
- 細說jsonpJSON
- jsonp promise 封裝JSONPromise封裝
- JSONP 是什麼JSON
- JSONP用法詳解JSON
- CORS/JSONP比較CORSJSON
- 面試題-探索JSONP面試題JSON
- json和jsonpJSON
- jsonp 封裝思想JSON封裝
- ajax jsonp跨域JSON跨域
- 深入淺出 JSONPJSON
- jsonp跨域封裝JSON跨域封裝
- 說說CORS與jsonpCORSJSON
- JavaScript跨域呼叫、JSONPJavaScript跨域JSON
- 原生ajax請求&JSONPJSON
- jsonp的promise封裝JSONPromise封裝
- Node.js返回JSONPNode.jsJSON
- 學習學習再學習
- 再也不學AJAX了!(三)跨域獲取資源 ② - JSONP & CORS跨域JSONCORS
- JSONP挖掘與高階利用JSON
- JSONP 通用函式封裝JSON函式封裝
- jsonp的原理與實現JSON
- JSONP的一點筆記JSON筆記
- json jsonp的區別JSON
- 原生JavaScript實現AJAX、JSONPJavaScriptJSON
- 說說JSON和JSONPJSON
- 深度學習——學習目錄——學習中……深度學習
- 利用JSONP進行水坑攻擊JSON
- jsonp跨域資源引起CORBJSON跨域ORB
- php 支援jsonp跨域請求PHPJSON跨域
- ajax、axios、fetch、jsonp、corsiOSJSONCORS