第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

章節(jié)
問答
課簽
筆記
評論
占位
占位

json與jsonp

JSON:把響應(yīng)的結(jié)果當(dāng)作 JSON 執(zhí)行,并返回一個 JavaScript 對象。如果指定的是 json,響應(yīng)結(jié)果作為一個對象,在傳遞給成功處理函數(shù)之前使用 jQuery.parseJSON 進行解析。 解析后的 JSON 對象可以通過該 jqXHR 對象的 responseJSON 屬性獲得的。json 的處理只要是在 ajaxConvert 方法中把結(jié)果給轉(zhuǎn)換成需要是 json 格式,這是后面的內(nèi)容,這里主要研究下 jsonp 的預(yù)處理。

JSONP:是一個非官方的協(xié)議,它允許在服務(wù)器端集成 Script tags 返回至客戶端,通過javascript callback 的形式實現(xiàn)跨域訪問(這僅僅是 JSONP 簡單的實現(xiàn)形式)。JSON 系統(tǒng)開發(fā)方法是一種典型的面向數(shù)據(jù)結(jié)構(gòu)的分析和設(shè)計方法,以活動為中心,一連串的活動的順序組合成一個完整的工作進程。

JSONP 出現(xiàn)的根源:

  • 跨域這個問題的產(chǎn)生根本原因是瀏覽器的同源策略限制,理解同源策略的限制同源策略是指阻止代碼獲得或者更改從另一個域名下獲得的文件或者信息。也就是說我們的請求地址必須和當(dāng)前網(wǎng)站的地址相同。同源策略通過隔離來實現(xiàn)對資源的保護,解決這個限制的一個相對簡單的辦法就是在服務(wù)器端發(fā)送請求,服務(wù)器充當(dāng)一個到達第三方資源的代理中繼。雖然是使用廣泛但是這個方法卻不夠靈活。
  • 另一個辦法就是使用框架(frames),將第三方站點的資源包含進來,但是包含進來的資源同樣要受到同源策略的限制。
  • 有一個很巧妙的辦法就是在頁面中使用動態(tài)代碼元素,代碼的源指向服務(wù)地址并在自己的代碼中加載數(shù)據(jù)。當(dāng)這些代碼加載執(zhí)行的時候,同源策略就不會起到限制。但是如果代碼試圖下載文件的時候執(zhí)行還是會失敗,幸運的是,我們可以使用JSON(JavaScript Object Notation)來改進這個應(yīng)用。

JSON 和 JSONP

與 XML 相比,JSON 是一個輕量級的數(shù)據(jù)交換格式。JSON 對于JavaScript開發(fā)人員充滿魅力的原因在于 JSON 本身就是 Javascript中的對象。

例如一個 ticker 對象:

var ticker = {symbol:'IBM',price:100}
而JSON串就是 {symbol:'IBM',price:100}
  • 這樣我們就可以在函數(shù)的參數(shù)中傳遞 JSON 數(shù)據(jù)。我們很容易掌握在函數(shù)中使用動態(tài)的 JSON 參數(shù)數(shù)據(jù),但是我們的目的并不是這個。
  • 通過使我們的函數(shù)能夠加載動態(tài)的 JSON 數(shù)據(jù),我們就能夠處理動態(tài)的數(shù)據(jù),這項技術(shù)叫做 Dynamic Javascript Insertion。

index.html 中:

function showPrice(data){ 
    alert("Symbol:" + data.symbol + ", Price:" + data.price)
}

然后動態(tài)加載 ticker.js 腳本

var data = {symbol:'IBM', price:100}; 
showPrice(data);
  • 代碼通過動態(tài)加入 Javascript 代碼,來執(zhí)行函數(shù)加載數(shù)據(jù)。正如之前提到過的,同源策略對于動態(tài)插入的代碼不適用。也就是你可以從不同的域中加載代碼,來執(zhí)行在他們代碼中的 JSON 數(shù)據(jù)。這就是 JSONP(JSON with Padding)。注意,使用這種方法時,你必須在頁面中定義回調(diào)函數(shù),就像上例中的 showPrice 一樣。
  • 我們通常所說的 JSONP 服務(wù)(遠(yuǎn)程 JSON 服務(wù)),實際上就是一種擴展的支持在用戶定義函數(shù)中包含返回數(shù)據(jù)的能力。這種方法依賴于必須接受一個回調(diào)函數(shù)的名字作為參數(shù)。然后執(zhí)行這個函數(shù),處理 JSON 數(shù)據(jù),并顯示在客戶頁面上。
所以總結(jié)其實 json 的一個核心點:允許用戶傳遞一個 callback 參數(shù)給服務(wù)端,然后服務(wù)端返回數(shù)據(jù)時會將這個 callback 參數(shù)作為函數(shù)名來包裹住 JSON 數(shù)據(jù),這樣客戶端就可以隨意定制自己的函數(shù)來自動處理返回數(shù)據(jù)了。

 

任務(wù)

?不會了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數(shù)過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務(wù)號

綁定后可得到

  • · 粉絲專屬優(yōu)惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復(fù)提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關(guān)注公眾號
關(guān)注后,及時獲悉本課程動態(tài)

舉報

0/150
提交
取消
全部 精華 我要發(fā)布
全部 我要發(fā)布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發(fā)表

為什么扣積分?

本次提問將花費2個積分

繼續(xù)發(fā)表請點擊 "確定"

為什么扣積分?