學習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
- JSONP 用法JSON
- 學習AJAX必知必會(5)~同源策略、解決跨域問題(JSONP、CORS)跨域JSONCORS
- JSONP 是什麼JSON
- jsonp promise 封裝JSONPromise封裝
- JSONP用法詳解JSON
- CORS/JSONP比較CORSJSON
- 原生ajax請求&JSONPJSON
- 說說CORS與jsonpCORSJSON
- ajax、axios、fetch、jsonp、corsiOSJSONCORS
- jsonp跨域封裝JSON跨域封裝
- JavaScript跨域呼叫、JSONPJavaScript跨域JSON
- JSONP 通用函式封裝JSON函式封裝
- 2020-3-1-jsonp原理JSON
- Python獲取jsonp資料PythonJSON
- JSONP挖掘與高階利用JSON
- jsonp跨域資源引起CORBJSON跨域ORB
- 利用JSONP進行水坑攻擊JSON
- JSONP 跨域原理及實現JSON跨域
- php 支援jsonp跨域請求PHPJSON跨域
- JavaScript中模擬實現jsonpJavaScriptJSON
- ajax與jsonp的區別及用法JSON
- 前端也需要了解的 JSONP 安全前端JSON
- Axios、axios攔截器、fetch-jsonp ——0807iOSJSON
- jquery 之 jsonp 與 laravel 實現跨域jQueryJSONLaravel跨域
- 50行不到實現Promise化的jsonpPromiseJSON
- 請說說json和jsonp的區別?JSON
- 從 Ajax 聊一聊 Jsonp 點選劫持JSON
- 為什麼jsonp不支援post的方法?JSON
- 深度學習——學習目錄——學習中……深度學習
- 簡單理解JSONP的定義及其實現JSON
- java後臺介面相容jsonp格式資料JavaJSON
- 【跨域】jsonp看完這篇文章就夠了跨域JSON
- 簡單的實現jsonp跨域請求JSON跨域
- 深度學習學習框架深度學習框架
- 學習ThinkPHP,學習OneThinkPHP