日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

初步了解JSONP

發(fā)布時(shí)間:2024/4/13 javascript 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初步了解JSONP 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、JSON 與 JSONP?

JSON是一種基于文本的數(shù)據(jù)交換方式(數(shù)據(jù)描述格式),JSONP是一種非官方跨域數(shù)據(jù)交互協(xié)議。

ajax的核心是通過(guò)XmlHttpRequest獲取非本頁(yè)內(nèi)容,而jsonp的核心則是動(dòng)態(tài)添加<script>標(biāo)簽來(lái)調(diào)用服務(wù)器提供的js腳本。

二、為什么要用JSONP

Ajax直接請(qǐng)求普通文件是跨域無(wú)權(quán)限訪問(wèn)的,但是Web頁(yè)面上調(diào)用js文件時(shí)則不受是否跨域影響,于是服務(wù)端可以將數(shù)據(jù)裝進(jìn)JS文件傳輸回來(lái)。jQuery支持JSONP。

方式:用戶傳遞一個(gè)callback參數(shù)給服務(wù)端,然后服務(wù)端返回?cái)?shù)據(jù)時(shí)會(huì)將這個(gè)callback參數(shù)作為函數(shù)名來(lái)包裹住JSON數(shù)據(jù),這樣客戶端就可以隨意定制自己的函數(shù)來(lái)自動(dòng)處理返回?cái)?shù)據(jù)了。

?

三、DEMO

JQUERY

?

$.ajax({type: "get",async: false,//true為異步請(qǐng)求(默認(rèn))。false為同步請(qǐng)求,同步請(qǐng)求將鎖住瀏覽器,用戶其它操作必須等待請(qǐng)求完成才可以執(zhí)行。url: "",data:{},//發(fā)送到服務(wù)器的數(shù)據(jù)。將自動(dòng)轉(zhuǎn)換為請(qǐng)求字符串格式。GET 請(qǐng)求中將附加在 URL 后。dataType: "jsonp",//預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,jQuery 將自動(dòng)根據(jù) HTTP 包 MIME 信息來(lái)智能判斷.使用 JSONP 形式調(diào)用函數(shù)時(shí),如 "myurl?callback=?" jQuery 將自動(dòng)替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。jsonp: "callback",//傳遞給請(qǐng)求處理程序或頁(yè)面的,用以獲得jsonp回調(diào)函數(shù)名的參數(shù)名(默認(rèn)為:callback)jsonpCallback:"",//自定義的jsonp回調(diào)函數(shù)名稱,默認(rèn)為jQuery自動(dòng)生成的隨機(jī)函數(shù)名,也可以寫(xiě)"?",jQuery會(huì)自動(dòng)為你處理數(shù)據(jù),(如果沒(méi)設(shè)置,服務(wù)器可以用$_GET['callback']取到j(luò)query默認(rèn)生成的隨機(jī)函數(shù)名)success: function(data){//請(qǐng)求成功后的回調(diào)函數(shù)。console.log(data);},error: function(msg){//請(qǐng)求失敗時(shí)調(diào)用此函數(shù)。console.log(msg);}});

  

PHP

function jsonp($json){$callback = isset($_GET['callback']) ? $_GET['callback'] : $_POST['callback'];if (!preg_match('|^[0-9a-zA-Z_]+$|',$callback))exit('callback invalid');if (is_array($json)){$json = json_encode($json);}echo $callback.'('.$json.');';exit;}jsonp(array('ret'=>0));

  

轉(zhuǎn)載于:https://www.cnblogs.com/lzs-888/p/5392881.html

總結(jié)

以上是生活随笔為你收集整理的初步了解JSONP的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。