前端人員必須會的jsonp

2021-07-23 10:18:30 字數 1255 閱讀 7681

同源策略(same origin policy)

瀏覽器出於安全方面的考慮,只允許與同域下的接**互。

同域指的是?

同協議:如都是http或者https

同網域名稱:如都是 和

同埠:如都是80埠

比如: 使用者開啟了 頁面: log, 當前頁面下的 js 向 的介面發 ajax 請求,瀏覽器是允許的。但假如向: 發ajax請求則會被瀏覽器阻止掉,因為存在跨域呼叫。

「原來如此,怪不得瀏覽器會報錯。跨域不過如此嘛!那 jsonp是什麼呢?」

html 中 script 標籤可以載入其他域下的js,比如我們經常引入乙個其他域下線上cdn的jquery。那如何利用這個特性實現從其他域下獲取資料呢?

可以先這樣試試:

這時候會向天氣介面傳送請求獲取資料,獲取資料後做為 js 來執行。 但這裡有個問題, 資料是 json 格式的資料,直接作為 js 執行的話我如何去得到這個資料來操作呢? 這樣試試: 這個請求到達後端後,後端會去解析callback這個引數獲取到字串showdata,在傳送資料做如下處理: 之前後端返回資料: 現在後端返回資料: showdata() 前端script標籤在載入資料後會把 「showdata()」做為 js 來執行,這實際上就是呼叫showdata這個函式,同時引數是 。 使用者只需要在載入提前在頁面定義好showdata這個全域性函式,在函式內部處理引數即可。 function showdata(ret)

「原來這就是 jsonp(json with padding),總結一下:」

1. jsonp是通過 script 標籤載入資料的方式去獲取資料當做 js **來執行

提前在頁面上宣告乙個函式,函式名通過介面傳參的方式傳給後台,後台解析到函式名後在原始資料上「包裹」這個函式名,傳送給前端。換句話說,jsonp 需要對應介面的後端的配合才能實現。

[封裝jsonp]

function jsonp(setting)

setting.key = setting.key||』callback』

setting.callback = setting.callback||function(){}

setting.data[setting.key] = 『ongetdata

window.ongetdata= function(data)

jsonp(

}) jsonp(,

callback: function(ret)

})

前端必須會的基本知識題目

前端必須會的基本知識題目 1.常用那幾種瀏覽器測試?有哪些核心 layout engine q1 瀏覽器 ie,chrome firefox safari opera q2 核心 trident gecko presto webkit 2.說下行內元素和塊級元素的區別?行內塊元素的相容性使用?ie8...

前端人員必須了解的各種瀏覽器

做為乙個前端人員最煩惱的就是各種瀏覽器的相容性問題。從微軟的ie6 ie7 ie8到火狐公司的firefox以及其 他各公司的瀏覽器多多少少存在一定的相容性問題。每次你在寫html的時候是否會感到相當苦惱。以下我們簡單 介紹下目前世界流行的各主流瀏覽器。1 ie瀏覽器 2 火狐瀏覽器 3 360安全...

Vim的必須會的技巧

高效率移動 1 在插入模式之外 基本上來說,你應該盡可能少的呆在插入模式裡面,因為在插入模式裡面 vim 就像乙個 啞巴 編輯器一樣。很多新手都會一直呆在插入模式裡面,因為這樣易於使用。但 vim 的強大之處在於他的命令列模式!你會發現,在你越來越了解 vim 之後,你就會花越來越少的時間使用插入模...