摘要:跨域服務(wù)器文件代碼本地得到航班信息查詢結(jié)果后的回調(diào)函數(shù)你查詢的航班結(jié)果是票價元,余票張。三那么服務(wù)器到底做了什么呢說到底,就是拼接字符串。數(shù)據(jù)接收函數(shù)名稱輸出四與的區(qū)別是什么和本質(zhì)上是不同的東西。
一、JSONP的誕生
首先,因為ajax無法跨域,然后開發(fā)者就有所思考
其次,開發(fā)者發(fā)現(xiàn),
這邊做的就是直接引入一個js,頁面將會彈出一個提示窗體,顯示 我是遠程文件。 【栗子二】 本地 這邊做的是 頁面將會彈出一個提示窗體。顯示本地函數(shù)被跨域的遠程js調(diào)用成功,并且還接收到了 我是遠程js帶來的數(shù)據(jù)。 新問題出現(xiàn)了:讓遠程js知道它應(yīng)該調(diào)用的本地函數(shù)叫什么名字呢?畢竟是jsonp的服務(wù)者都要面對很多服務(wù)對象,而這些服務(wù)對象各自的本地函數(shù)都不相同??? 【栗子三】 跨域服務(wù)器 本地 這次我們做的是 三、那么服務(wù)器到底做了什么呢? 說到底,就是拼接字符串。 四、與AJAX的區(qū)別是什么?
跨域服務(wù)器
文件:remote.js
代碼:localHandler({"result":"我是遠程js帶來的數(shù)據(jù)"});
1、本地定義一個函數(shù)
2、引入一個js
3、被引入的js里面,調(diào)用這個函數(shù)
跨域服務(wù)端提供的js腳本動態(tài)生成,這樣調(diào)用者可以傳一個參數(shù)過去告訴跨域服務(wù)端“我想要一段調(diào)用XXX函數(shù)的js代碼,請你返回給我”,于是跨域服務(wù)器就可以按照客戶端的需求來生成js腳本并響應(yīng)了。
文件:flightResult.php
代碼:flightHandler({
"code":"CA1998",
"price": 1780,
"tickets": 5
});
1、動態(tài)創(chuàng)建腳本
2、url中傳遞了一個code參數(shù),服務(wù)器去做查詢CA1998次航班的信息,callback參數(shù)告訴服務(wù)器,我的本地回調(diào)函數(shù)叫做flightHandler
3、跨域服務(wù)端調(diào)用這個函數(shù)flightHandler 頁面將會彈出一個提示窗體。把票價、余票以及張數(shù)給傳遞回來了。// 數(shù)據(jù)
$data = [
"name":"anonymous66",
"age":"18",
"like":"jianshu"
];
// 接收callback函數(shù)名稱
$callback = $_GET["callback"];
// 輸出
echo $callback . "(" . json_encode($data) . ")";
ajax和jsonp本質(zhì)上是不同的東西。
ajax的核心是通過XmlHttpRequest獲取非本頁內(nèi)容
jsonp的核心則是動態(tài)添加