最近在使用axios傳輸JSON對象時,遇到了一個棘手的問題:JSON對象始終為空。
一開始我以為是JSON對象的語法或格式有問題,于是我檢查了一遍代碼并使用了一些 JSON 校驗工具,確認了 JSON 語法沒有任何錯誤。可是問題仍然存在,JSON 對象為空。然后,我把傳輸 JSON 對象的代碼塊單獨拎出來,進行了一次簡單的測試。
axios.post('/api/data', { name: '小明', age: 18 }) .then(response =>{ console.log(response.data) }) .catch(error =>{ console.log(error) })
測試結果證明,使用 axios.post 方法發送 JSON 對象,參數即為第二個參數中的對象,但在服務端卻是空的。經過一番摸索,我發現該問題是由于 axios 在發送 post 請求時默認使用 Content-Type: application/x-www-form-urlencoded 格式,而不是我們所期望的 application/json 格式。
為了解決這個問題,只需要在發送請求時設置請求頭 Content-Type 為 application/json 即可:
axios.post('/api/data', { name: '小明', age: 18 }, { headers: { 'Content-Type': 'application/json' } }) .then(response =>{ console.log(response.data) }) .catch(error =>{ console.log(error) })
通過在請求頭中添加 'Content-Type': 'application/json',我們成功地將 JSON 對象正確傳輸到了服務端。