JSONP個人心得筆記

                                      JSONP個人心得筆記


目錄

                                      JSONP個人心得筆記

1.學習jsonp掌握三個問題

2.什麼是jsonp

2.1定義

2.2樣子

 3.爲什麼使用jsonp

3.1使用jsonp的場景

3.2js的跨域非同源

3.3爲什麼使用jsonp

4.jsonp的調用原理

5.jquery的封裝

1.學習jsonp掌握三個問題

  • 1.1什麼是jsonp
  • 1.2爲什麼使用jsonp
  • 1.3jsonp的調用原理是什麼

 

2.什麼是jsonp

2.1定義

基於json字符串格式的一種使用模式,相當於在json字符串外包裝一個方法名稱,json就相當於這個方法的參數function test(String json)

2.2樣子

test({"status":200,"msg":"","data":"{\"userId\":\"ecaf1f41-bc7b-4d2d-a237-3731caa11d86\",\"userName\":\"eeee\",\"userPassword\":\"e10adc3949ba59abbe56e057f20f883e\",\"userNickname\":\"sad\",\"userEmail\":\"[email protected]\",\"userType\":0}"})

 3.爲什麼使用jsonp

3.1使用jsonp的場景

大型項目,一般有可能涉及到跨系統的訪問,ajax可以實現跨系統的訪問,必須應用jsonp格式.

3.2js的跨域非同源

js發起ajax的位置(web系統,www.easymall.com),和訪問的資源位置(user系統,user.easymall.com)不在同一個域名:端口內,違反了js的同源策略,ajax無法解析json數據;

例子

說明

是否同源

www.a.com(1)

www.b.com(2)

域名完全布不同

1的js訪問2的資源

非同源

www.a.com:8080(1)

www.a.com:8081(2)

域名相同,端口不同

1的js訪問2的資源

非同源

www.a.com/haha(1)

www.a.com/kaka(2)

域名相同,端口相同,路徑不同

1的js訪問2的資源

同源

www.a.com

10.9.8.8

域名,訪問ip(hosts或者dns中的域名和ip映射)

1的js訪問2的資源

非同源

www.a.com

user.a.com

主域名相同,子域名不同(a.com,www開始的是主域名,user子域名)

非同源

 只要訪問的資源域名不同,端口不同,即使ip映射相關也都是非同源

3.3爲什麼使用jsonp

在複雜的,大型的項目開發過程中,一般無法避免js的跨域訪問(違反同源策略),造成json字符串無法解析,使用jsonp來解決

4.jsonp的調用原理

  • script標籤,src屬性可以訪問跨域,跨系統的任何數據; test({})拿到的是jsonp
  • 本地系統中,有一個js的方法,名稱必須和jsonp中的方法名稱一致,將會自動調用,把json傳遞給這個方法,作爲參數解析,相當於一個js方法直接解析了json

底層原理:script標籤的src獲取jsonp,本地js同名方法解析json數據;

5.jquery的封裝

jquery封裝了底層原理,src自動使用創建,function同名方法自動創建;

只要在$.ajax中的dataType:指定jsonp結構,就會在url地址後面自動拼接一個callback=jsonp+currenttime

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章