當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JSONP 原理
HTML 中 script 標(biāo)簽可以加載其他域下的js,比如我們經(jīng)常引入一個其他域下線上cdn的jQuery。那如何利用這個特性實現(xiàn)從其他域下獲取數(shù)據(jù)呢?
可以先這樣試試:
<script src="http://api.jirengu.com/weather.php"></script>這時候會向天氣接口發(fā)送請求獲取數(shù)據(jù),獲取數(shù)據(jù)后做為 js 來執(zhí)行。 但這里有個問題, 數(shù)據(jù)是 JSON 格式的數(shù)據(jù),直接作為 JS 運行的話我如何去得到這個數(shù)據(jù)來操作呢?
這樣試試:
<script src="http://api.jirengu.com/weather.php?callback=showData"></script>這個請求到達后端后,后端會去解析callback這個參數(shù)獲取到字符串showData,在發(fā)送數(shù)據(jù)做如下處理:
之前后端返回數(shù)據(jù): {"city": "hangzhou", "weather": "晴天"}
現(xiàn)在后端返回數(shù)據(jù): showData({"city": "hangzhou", "weather": "晴天"})
前端script標(biāo)簽在加載數(shù)據(jù)后會把 「showData({“city”: “hangzhou”, “weather”: “晴天”})」做為 js 來執(zhí)行,這實際上就是調(diào)用showData這個函數(shù),同時參數(shù)是 {“city”: “hangzhou”, “weather”: “晴天”}。
用戶只需要在加載提前在頁面定義好showData這個全局函數(shù),在函數(shù)內(nèi)部處理參數(shù)即可。
更多專業(yè)前端知識,請上 【猿2048】www.mk2048.com
總結(jié)
- 上一篇: js 值和引用
- 下一篇: JS基础:求一组数中的最大最小值,以及所