json的全名是JavaScript Object Notation(js對象標記),也就是一種數據結構,多用於數據結構描述。javascript
jsonp的全稱是json with padding(json的襯墊),就是對json數據作一下其餘處理。html
ajax不容許跨域請求,可是html有個漏洞就是帶src標籤的東西是能夠跨域的,如前端
<script src=""/> <img src=""/>
jsonp就是基於這個來實現的跨域請求。java
// index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> function cb(data) {// 默認回調函數是cb alert(data.name); } </script> <script src="http://127.0.0.1:3000?callback=cb"></script> </body> </html>
// index.js var http = require('http'); http.createServer((req, res) => { res.writeHead(200, { 'content-type': 'text/json;charset=utf-8' }); var data = { "name": "michael" }; data = JSON.stringify(data); //假設咱們定義的回調函數名爲cb var callback = 'cb' + '(' + data + ');'; res.end(callback); }).listen(3000);
首先在index.js所在的文件夾下執行node
node index.js
而後在index.html所在的文件夾下執行ajax
http-server -p 4000
這樣一個3000端口,一個4000端口,實現了跨域請求。此時打開index.html,會展現alert('michael')json
以上只是簡單實現,若是想在項目中大規模使用須要封裝不少東西。若是在開發環境中使用徹底能夠使用代理服務器完成,若是真的有跨域的業務,這也是一種解決方案。後端