1. 程式人生 > >利用Jsonp跨域大發888搭建請求數據(原生和Jquery的ajax請求),簡單易懂!

利用Jsonp跨域大發888搭建請求數據(原生和Jquery的ajax請求),簡單易懂!

回調 需要 執行 服務端 aaa ESS json http 子域

前言 :本文示例部署大發888搭建QQ2952777280【】 hxforum.com 在XAMPP建站集成軟件包上,在localhost環境下進行測試

1、什麽是跨域

由於瀏覽器同源策略,凡是發送請求url的協議、域名、端口三者之間任意一與當前頁面地址不同即為跨域。存在跨域的情況 :
(1)網絡協議不同,如http協議訪問https協議。

(2)端口不同,如8080端口訪問3000端口。

(3)域名不同,如aaaa.com訪問bbbb.com。

(4)子域名不同,如java.ddd.com訪問qianduan.ddd.com。

(5)域名和域名對應ip,如www.a.com訪問20.205.28.90.

2、Jsonp方法

因為srript標簽是不存在跨域的,所以利用 script標簽,加載src路徑,實現跨域加載js文件。該js文件中需要定義好一個方法,將該方法名傳遞給服務端,服務端根據該方法名,拼裝一個方法調用語句,響應給瀏覽器。又瀏覽器來執行該語句調用方法。通過參數,將響應的數據取出即可。
(1)原生JS請求方式

前端代碼:
var script = document.createElement(‘script‘);
script.type = ‘text/javascript‘;
script.src = ‘./js/text.js‘;
document.head.appendChild(script);
// 回調執行函數

function onBack(res) {
console.log(res) //{name:"小明",age:24}
}

後端代碼:
onBack({
name:"小明",
age:24
})

這裏需要註意的是,後端的數據形式必須作為函數的參數,且函數名要前後端保持一致。
(2)Jquery中的ajax請求方式

前端代碼:

$.ajax({
url:"./js/text.js",
type:"GET",
dataType:"jsonp", // 定義返回方式為jsonp
jsonpCallback:"onBack", //定義回調函數名字,前後端保持一致

success:function(data){
console.log(data) //{name:"小明",age:24}
},
error:function(res){
console.log("請求失敗!")
}
})

後端代碼:

onBack({
name:"小明",
age:24
})

缺點1:只能使用get請求。
缺點2:因為使用的是script標簽,存在安全隱患。
優點1:支持老式瀏覽器,以及可以向不支持CORS的網站請求數據。

利用Jsonp跨域大發888搭建請求數據(原生和Jquery的ajax請求),簡單易懂!