《vue3小白填坑記》Axios 發送請求,後臺收不到?

vue+axios 是異步請求常見組合,但是axios還是需要注意的。

後臺收不到數據有這麼幾種情況。

1、post後臺請求,收不到數據 以PHP爲例 $_POST爲空

axios 會把數據自動轉換成json字符串,發送類型:content-type:application/json

後臺PHP還是按照multipart/form-data或x-www-form-urlencoded類型來接受數據,自然接收不到。

後臺PHP處理,先檢測$_POST是不是爲空,再用下面的方法將獲取的json字符串轉成數組,獲取值

    public function post()
    {
        if (empty($_POST) && false !== strpos($_SERVER["CONTENT_TYPE"], 'application/json')) {
            $content = file_get_contents('php://input');
            $post    = (array)json_decode($content, true);
        } else {
            $post = $_POST;
        }
        return $post;
    }

2、axios,get請求後臺獲取不到數據

說起這個錯誤,主要是axios的文檔沒有看明白,就下手寫代碼了。

axios gei的請求參數應該用params 而post 可以使用data和params兩種數據,data和params 兩者不等同,params是最後拼接到網址url裏的,data是被打包到body裏提交後臺的。

用反了,後臺自然獲取不到數據,我作爲資深小白,曾經就卡在這裏一晚上。

再就是qs類庫,可以在axios配置裏,將get請求的數據先用qs拼接成字符串

const param = {id:1,name:lamb}
param = qs.stringify(params)
console.log(param)
//結果'id=1&name=lamb'

然後再發送請求

飛哥衝在前,小白不踩坑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章