麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

yii2-結合angularjs實現application/json的post數據提交

2019-11-10 19:30:27
字體:
來源:轉載
供稿:網友
HTTP/1.1 協議規定的 HTTP 請求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 這幾種。其中 POST 一般用來向服務端提交數據,本文主要討論 POST 提交數據的幾種方式。我們知道,HTTP 協議是以 ASCII 碼傳輸,建立在 TCP/ip 協議之上的應用層規范。規范把 HTTP 請求分為三個部分:狀態行、請求頭、消息主體。類似于下面這樣:<method> <request-url> <version><headers> <entity-body></entity-body></headers></version></request-url></method>協議規定 POST 提交的數據必須放在消息主體(entity-body)中,但協議并沒有規定數據必須使用什么編碼方式。實際上,開發者完全可以自己決定消息主體的格式,只要最后發送的 HTTP 請求滿足上面的格式就可以.但是,數據發送出去,還要服務端解析成功才有意義。一般服務端語言如 php、Python 等,以及它們的 framework,都內置了自動解析常見數據格式的功能。服務端通常是根據請求頭(headers)中的 Content-Type 字段來獲知請求中的消息主體是用何種方式編碼,再對主體進行解析。所以說到 POST 提交數據方案,包含了 Content-Type 和消息主體編碼方式兩部分。POST http://www.example.com HTTP/1.1Content-Type: application/x-www-form-urlencoded;charset=utf-8 title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3首先,Content-Type 被指定為 application/x-www-form-urlencoded;其次,提交的數據按照 key1=val1&key2=val2 的方式進行編碼,key 和 val 都進行了 URL 轉碼。大部分服務端語言都對這種方式有很好的支持。例如 PHP 中,$_POST['title'] 可以獲取到 title 的值,$_POST['sub'] 可以得到 sub 數組。很多時候,我們用 Ajax 提交數據時,也是使用這種方式。例如 JQuery 和 QWrap 的 Ajax,Content-Type 默認值都是application/x-www-form-urlencoded;charset=utf-8所以我們都可以方便地在服務端通過$_POST[]來獲取值。但現在在移動互聯網的發展中,特別是終端多樣化,前端的工程化越來越成熟,很多的應用使用 Ajax 進行數據交互之后,我們完全可以定義新的數據提交方式,給開發帶來更多便利。下面要說的就是application/json這種數據交換方式。application/json 這個 Content-Type 作為響應頭大家肯定不陌生,在服務端將數據以json序列化的方式返回前端。實際上,現在越來越多的人把它作為請求頭,用來告訴服務端消息主體是序列化后的 JSON 字符串。AngularJS 中的 Ajax 功能,默認就是提交 application/json格式。例如下面這段代碼:var data = {'title':'test', 'sub' : [1,2,3]};$http.post(url, data).success(function(result) {    ...});最終發送的請求是:POST http://www.example.com HTTP/1.1Content-Type: application/json;charset=utf-8 {"title":"test","sub":[1,2,3]}這種方案,可以方便的提交復雜的結構化數據,特別適合 RESTful 的接口。各大抓包工具如 Chrome 自帶的開發者工具、Firebug、Fiddler,都會以樹形結構展示 JSON 數據,非常友好。但也有些服務端語言還沒有支持這種方式,例如 php 就無法通過 $_POST 對象從上面的請求中獲得內容。這時候,需要自己動手處理下:在請求頭中 Content-Type 為 application/json 時,從 php://input 里獲得原始輸入流,再 json_decode 成對象。一些 php 框架已經開始這么做了。當然 AngularJS 也可以配置為使用 x-www-form-urlencoded 方式提交數據。如有需要,可以參考我之前寫的一篇bloghttp://blog.csdn.net/u012979009/article/details/52301118下面針對于自己使用的yii2框架,詳細說明一下如何實現接收application/json格式。yii2在使用restful的api的時候,前端可能會發送application/json或者text/json,比如上面說的angularjs。我們只需要在配置文件中reauest組件中配置parsers數組,即可,如下面的紅色部分。'components' => [        'request' => [            'csrfParam' => '_csrf-frontend',            'cookieValidationKey' => '1234567',            'parsers' => [                'application/json' => 'yii/web/JsonParser',                'text/json' => 'yii/web/JsonParser',            ],        ],    .....]
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: lutube成人福利在线观看 | 狠狠干天天操 | 精品在线视频播放 | 免费网址黄 | 免费在线观看午夜视频 | 成人在线视频免费看 | 欧美精品激情在线 | 久久精品久久久久 | 欧美三级毛片 | 欧美18videos性处按摩 | av免费在线网 | 日本在线播放一区二区三区 | 今井夏帆av一区二区 | 日本高清一级片 | 久久影院午夜 | 成人免费影院 | 香蕉在线看 | 秋霞a级毛片在线看 | 国产午夜精品视频免费不卡69堂 | 2021免费日韩视频网 | 国产免费视频一区二区裸体 | 激情综合视频 | 91成人久久 | 久久影城 | 视频一区 中文字幕 | 在线播放免费播放av片 | 一级电影免费看 | 在线成人免费视频 | 欧美女人天堂 | av在线播放网址 | 久久艳片 | 我爱我色成人网 | 久久精品高清 | 久久精品久久精品久久精品 | 欧产日产国产精品99 | 色偷偷欧美 | 欧美日韩1区2区 | 免费毛片视频 | 成人免费看视频 | 日本最新免费二区三区 | a免费毛片 |