jsonp格式前端發送和后臺接收的示例分析

這篇文章主要介紹了jsonp格式前端發送和后臺接收的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創新互聯是專業的通化縣網站建設公司,通化縣接單;提供網站設計、網站制作,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行通化縣網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

什么是JSONP?

先說說JSONP是怎么產生的:

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

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

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

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

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

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

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

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

什么是JSON?

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

JSON的優點:

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

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

3、輕量級數據格式,占用字符數量極少,特別適合互聯網傳遞;

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

5、容易編寫和解析,當然前提是你要知道數據結構;

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

好了,回歸正題,

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

一.前端發送

<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: {      //注意內容必須為字典
        aaa:aaa    //字典里內容前面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)) #傳過來的內容他會打散,具體的自己看一下就知道
  
  #注意點返回的字符串必須是 'callback+("返回的字符串")' 這樣的一個字符串,不然前端不會接收
  return HttpResponse(callback+'("ok")')

感謝你能夠認真閱讀完這篇文章,希望小編分享的“jsonp格式前端發送和后臺接收的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯行業資訊頻道,更多相關知識等著你來學習!

當前標題:jsonp格式前端發送和后臺接收的示例分析
本文來源:http://m.kartarina.com/article22/gesgcc.html

成都網站建設公司_創新互聯,為您提供營銷型網站建設定制網站網站設計外貿建站網站收錄解決方案

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 久热中文字幕无码视频| 性色AV无码中文AV有码VR| 少妇人妻av无码专区| 亚洲中文字幕无码av| 无码av中文一二三区| 国精品无码一区二区三区左线| 精品少妇无码AV无码专区| 无码av大香线蕉伊人久久| 午夜不卡久久精品无码免费| 九九无码人妻一区二区三区| 无码av免费一区二区三区| 亚洲AV永久无码精品一区二区国产| 久久无码AV一区二区三区| 久久久久亚洲AV无码专区网站| 蜜色欲多人AV久久无码| 久久亚洲AV无码精品色午夜| 国产精品无码a∨精品| 成人毛片无码一区二区| 18禁免费无码无遮挡不卡网站 | 亚洲一本大道无码av天堂| 精品无码一区二区三区爱欲九九| 亚洲精品无码专区久久同性男| 无码人妻精品中文字幕免费东京热| 四虎成人精品国产永久免费无码 | 亚洲人成人无码网www电影首页 | 亚洲精品无码AV人在线播放| 国产精品亚洲专区无码牛牛 | 无码不卡av东京热毛片| 亚洲中文久久精品无码ww16| 国产AV无码专区亚洲AV漫画| 亚洲精品无码永久在线观看| 国产成人综合日韩精品无码| 无码熟妇人妻av| 日韩AV无码一区二区三区不卡| 无码日韩精品一区二区免费| 狠狠精品干练久久久无码中文字幕| 亚洲av无码一区二区三区人妖 | 狼人无码精华AV午夜精品| 激情射精爆插热吻无码视频| 国产精品va无码免费麻豆| 亚洲Av无码乱码在线播放|