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'
然後再發送請求
飛哥衝在前,小白不踩坑。