国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JSONP是什么

ormsf / 1731人閱讀

摘要:跨域服務器文件代碼本地得到航班信息查詢結果后的回調函數你查詢的航班結果是票價元,余票張。三那么服務器到底做了什么呢說到底,就是拼接字符串。數據接收函數名稱輸出四與的區別是什么和本質上是不同的東西。

一、JSONP的誕生

首先,因為ajax無法跨域,然后開發者就有所思考

其次,開發者發現,

這邊做的就是直接引入一個js,頁面將會彈出一個提示窗體,顯示 我是遠程文件。

【栗子二】
跨域服務器
文件:remote.js
代碼:

localHandler({"result":"我是遠程js帶來的數據"});

本地

 

這邊做的是
1、本地定義一個函數
2、引入一個js
3、被引入的js里面,調用這個函數

頁面將會彈出一個提示窗體。顯示本地函數被跨域的遠程js調用成功,并且還接收到了 我是遠程js帶來的數據。

新問題出現了:讓遠程js知道它應該調用的本地函數叫什么名字呢?畢竟是jsonp的服務者都要面對很多服務對象,而這些服務對象各自的本地函數都不相同?。?/p>

【栗子三】
跨域服務端提供的js腳本動態生成,這樣調用者可以傳一個參數過去告訴跨域服務端“我想要一段調用XXX函數的js代碼,請你返回給我”,于是跨域服務器就可以按照客戶端的需求來生成js腳本并響應了。

跨域服務器
文件:flightResult.php
代碼:

flightHandler({
    "code":"CA1998",
    "price": 1780,
    "tickets": 5
});

本地


這次我們做的是
1、動態創建腳本
2、url中傳遞了一個code參數,服務器去做查詢CA1998次航班的信息,callback參數告訴服務器,我的本地回調函數叫做flightHandler
3、跨域服務端調用這個函數flightHandler 頁面將會彈出一個提示窗體。把票價、余票以及張數給傳遞回來了。

三、那么服務器到底做了什么呢? 說到底,就是拼接字符串。

// 數據
$data = [
    "name":"anonymous66",
    "age":"18",
    "like":"jianshu"
];
// 接收callback函數名稱
$callback = $_GET["callback"];
// 輸出
echo $callback . "(" . json_encode($data) . ")";

四、與AJAX的區別是什么?
ajax和jsonp本質上是不同的東西。
ajax的核心是通過XmlHttpRequest獲取非本頁內容
jsonp的核心則是動態添加

閱讀需要支付1元查看
<