php 後臺接受POST值

【場景描述】:展現型企業站製做管理後臺,前端框架:vue.js2.0,bootstrap,後臺語言:phpphp

【問題描述】:使用管理後臺向接口發送請求時,接口使用PHP的$_POST['args'],接收提交的字段;在使用原始的表單submit,後臺可以正常接收到提交的字段。可是使用vue或者angularjs等js框架提交時,因爲提交的是JSON格式的字段,使用$_POST[]是接收不到的;前端

【解決方案】:vue

PHP接收JSON格式的數據 在API服務中,目前流行採用json形式來交互。angularjs

給前端調用的接口輸出Json數據,這個比較簡單,只須要組織好數據,用json_encode($array) 轉化一下,前端就獲得json格式的數據。json

接收前端提交的json數據稍微複雜一點,緣由是:PHP默認識別的數據類型是application/x-www.form-urlencoded標準的數據類型。所以,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內容沒法解析,若是用$_POST數組來接收就會失敗!bootstrap

此時能夠使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 來獲取提交的數據 查看手冊,數組

能夠發現$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的區別:   前端框架

$_POST:經過 HTTP POST 方法傳遞的變量組成的數組,是自動全局變量。   app

$GLOBALS['HTTP_RAW_POST_DATA'] :老是產生 $HTTP_RAW_POST_DATA 變量包含有原始的 POST 數據。框架

此變量僅在碰到未識別 MIME 類型的數據時產生。

$HTTP_RAW_POST_DATA 對於 enctype="multipart/form-data" 表單數據不可用。

也就是說基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是同樣的。

可是若是post過來的數據不是PHP可以識別的,你能夠用 $GLOBALS['HTTP_RAW_POST_DATA']來接收,好比 text/xml 或者 soap 等等。   

補充說明:PHP默認識別的數據類型是application/x-www.form-urlencoded標準的數據類型。

相關文章
相關標籤/搜索