最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jsonp格式前端發(fā)送和后臺接受寫法的代碼詳解

 更新時間:2019年11月07日 09:30:49   作者:小小咸魚YwY  
jsonp是ajax提交的一種格式不會受跨域限制,這篇文章主要介紹了jsonp格式前端發(fā)送和后臺接受寫法的代碼詳解,需要的朋友可以參考下

什么是JSONP?

先說說JSONP是怎么產(chǎn)生的:

其實網(wǎng)上關于JSONP的講解有很多,但卻千篇一律,而且云里霧里,對于很多剛接觸的人來講理解起來有些困難,小可不才,試著用自己的方式來闡釋一下這個問題,看看是否有幫助。

1、一個眾所周知的問題,Ajax直接請求普通文件存在跨域無權限訪問的問題,甭管你是靜態(tài)頁面、動態(tài)網(wǎng)頁、web服務、WCF,只要是跨域請求,一律不準;

2、不過我們又發(fā)現(xiàn),Web頁面上調(diào)用js文件時則不受是否跨域的影響(不僅如此,我們還發(fā)現(xiàn)凡是擁有"src"這個屬性的標簽都擁有跨域的能力,比如<script>、<img>、<iframe>);

3、于是可以判斷,當前階段如果想通過純web端(ActiveX控件、服務端代理、HTML5之Websocket等方式不算)跨域訪問數(shù)據(jù)就只有一種可能,那就是在遠程服務器上設法把數(shù)據(jù)裝進js格式的文件里,供客戶端調(diào)用和進一步處理;

4、恰巧我們已經(jīng)知道有一種叫做JSON的純字符數(shù)據(jù)格式可以簡潔的描述復雜數(shù)據(jù),更妙的是JSON還被js原生支持,所以在客戶端幾乎可以隨心所欲的處理這種格式的數(shù)據(jù);

5、這樣子解決方案就呼之欲出了,web客戶端通過與調(diào)用腳本一模一樣的方式,來調(diào)用跨域服務器上動態(tài)生成的js格式文件(一般以JSON為后綴),顯而易見,服務器之所以要動態(tài)生成JSON文件,目的就在于把客戶端需要的數(shù)據(jù)裝入進去。

6、客戶端在對JSON文件調(diào)用成功之后,也就獲得了自己所需的數(shù)據(jù),剩下的就是按照自己需求進行處理和展現(xiàn)了,這種獲取遠程數(shù)據(jù)的方式看起來非常像AJAX,但其實并不一樣。

7、為了便于客戶端使用數(shù)據(jù),逐漸形成了一種非正式傳輸協(xié)議,人們把它稱作JSONP,該協(xié)議的一個要點就是允許用戶傳遞一個callback參數(shù)給服務端,然后服務端返回數(shù)據(jù)時會將這個callback參數(shù)作為函數(shù)名來包裹住JSON數(shù)據(jù),這樣客戶端就可以隨意定制自己的函數(shù)來自動處理返回數(shù)據(jù)了。

什么是JSON?

前面簡單說了一下,JSON是一種基于文本的數(shù)據(jù)交換方式,或者叫做數(shù)據(jù)描述格式,你是否該選用他首先肯定要關注它所擁有的優(yōu)點。

JSON的優(yōu)點:

1、基于純文本,跨平臺傳遞極其簡單;

2、Javascript原生支持,后臺語言幾乎全部支持;

3、輕量級數(shù)據(jù)格式,占用字符數(shù)量極少,特別適合互聯(lián)網(wǎng)傳遞;

4、可讀性較強,雖然比不上XML那么一目了然,但在合理的依次縮進之后還是很容易識別的;

5、容易編寫和解析,當然前提是你要知道數(shù)據(jù)結(jié)構;

JSON的缺點當然也有,但在作者看來實在是無關緊要的東西,所以不再單獨說明。

好了,回歸正題,

jsonp是ajax提交的一種格式不會受跨域限制

一.前端發(fā)送

<button>11111</button>
<script src="https://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js"></script>
<script>
  document.querySelector('button').onclick = function () {
    $.ajax({
      url: 'http://localhost:8000/test',
      type: 'get',
      dataType: 'jsonp',
      data: {      //注意內(nèi)容必須為字典
        aaa:aaa    //字典里內(nèi)容前面key可以不加"",默認會給你加上""變成字符串但是不會當成變量
      },         //字典后面value有''為字符串,沒有為變量
      success: function (data) {
        console.log(data);
      }
    });
  }
</script>

二.后臺接受

#我就拿python舉例,其他也大同小異
from django.shortcuts import render,HttpResponse,redirect
def test(request):
  callback=request.GET.get('callback')
  print(dict(request.GET)) #傳過來的內(nèi)容他會打散,具體的自己看一下就知道
  
  #注意點返回的字符串必須是 'callback+("返回的字符串")' 這樣的一個字符串,不然前端不會接收
  return HttpResponse(callback+'("ok")')

總結(jié)

以上所述是小編給大家介紹的jsonp格式前端發(fā)送和后臺接受寫法的代碼詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關文章

  • 使用Taro實現(xiàn)小程序商城的購物車功能模塊的實例代碼

    使用Taro實現(xiàn)小程序商城的購物車功能模塊的實例代碼

    這篇文章主要介紹了使用Taro實現(xiàn)的小程序商城的購物車功能模塊,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 微信小程序的引導頁實現(xiàn)代碼

    微信小程序的引導頁實現(xiàn)代碼

    這篇文章主要介紹了微信小程序的引導頁實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • js鼠標滑過彈出層的定位IE6bug解決辦法

    js鼠標滑過彈出層的定位IE6bug解決辦法

    大家在寫div+css的時候經(jīng)常會用到彈出層,由于IE6的bug,所以當使用多個標簽重復寫彈出層的時候會遇到后面的層壓在了彈出層的上面;用Jquery給彈出層的z軸依次增加高度可解決.代碼很簡單,效果很顯著,需要了解的朋友可以參考下
    2012-12-12
  • js中的布爾運算符使用介紹

    js中的布爾運算符使用介紹

    布爾運算符 && 和 || 的時候,我說過它們的結(jié)果是布爾值,它們也能用于計算其他的類型的數(shù)據(jù),這種時候,返回的就將是其中的一個參數(shù)了
    2013-11-11
  • JS實現(xiàn)字符串去重及數(shù)組去重的方法示例

    JS實現(xiàn)字符串去重及數(shù)組去重的方法示例

    這篇文章主要介紹了JS實現(xiàn)字符串去重及數(shù)組去重的方法,涉及javascript針對字符串與數(shù)組的遍歷、判斷、刪除、添加等相關操作技巧,需要的朋友可以參考下
    2018-04-04
  • 微信小程序獲取用戶手機號碼詳細教程(前端+后端)

    微信小程序獲取用戶手機號碼詳細教程(前端+后端)

    在我們開發(fā)微信小程序時,獲取用戶手機號碼是常見的需求之一,這篇文章主要給大家介紹了關于微信小程序獲取用戶手機號碼的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • JavaScript深入理解系列之call與apply

    JavaScript深入理解系列之call與apply

    Function.prototype.call和Function.prototype.apply都是非常常用的方法,它們的作用一模一樣,區(qū)別僅在于傳入?yún)?shù)形式的不同,下面這篇文章主要介紹了JavaScript深入理解系列之call與apply的相關資料,需要的朋友可以參考下
    2022-04-04
  • 利用Axios實現(xiàn)無感知雙Token刷新的詳細教程

    利用Axios實現(xiàn)無感知雙Token刷新的詳細教程

    在現(xiàn)代系統(tǒng)中,Token認證已成為保障用戶安全的標準做法,然而,盡管許多系統(tǒng)采用了這種認證方式,卻在處理Token刷新方面存在不足,導致用戶體驗不佳,許多系統(tǒng)未能提供一種無縫的、用戶無感知的Token刷新機制,所以本文介紹了教你用Axios實現(xiàn)無感知雙Token刷新
    2024-08-08
  • 前端異步同步處理應用場景及優(yōu)化詳細講解和舉例

    前端異步同步處理應用場景及優(yōu)化詳細講解和舉例

    前端開發(fā)中異步與同步處理分別適用不同場景,異步操作如網(wǎng)絡請求、文件讀寫等,而同步處理適用于簡單、線性任務,異步處理可通過回調(diào)函數(shù)、Promise、async/await等方式優(yōu)化,提高代碼效率和可維護性,需要的朋友可以參考下
    2024-10-10
  • Openlayers實現(xiàn)根據(jù)半徑繪制圓形

    Openlayers實現(xiàn)根據(jù)半徑繪制圓形

    這篇文章主要介紹了利用Openlayers實現(xiàn)繪制三個圓形,繪制完成之后,三個圓心連接起來,然后標記出每兩個圓心之間的距離,感興趣的可以了解一下
    2022-08-08

最新評論

湘潭市| 江都市| 墨竹工卡县| 鹰潭市| 庆安县| 双鸭山市| 邢台县| 昌黎县| 疏勒县| 巴彦县| 桃园市| 伽师县| 乐安县| 梁河县| 新邵县| 靖远县| 离岛区| 望奎县| 洮南市| 西宁市| 武定县| 南陵县| 正阳县| 乌海市| 闵行区| 内江市| 柘城县| 安远县| 綦江县| 吐鲁番市| 康乐县| 永仁县| 哈巴河县| 和田县| 罗江县| 麻栗坡县| 芷江| 衡山县| 昌黎县| 穆棱市| 南城县|