今天前端使用Vue傳入參數,后端接收時發現在參數末尾多了一個等於號=
前端:
1 <template> 2 <div> 3 <el-input v-model="phoneNum" placeholder="請輸入手機號"/> 4 <el-button @click="sendVerifyCode(phoneNum)">發送驗證碼</el-button> 5 <el-input v-model="verifyCode" placeholder="請輸入驗證碼"/> 6 <el-button @click="checkVerifyCode(phoneNum, verifyCode)">提交</el-button> 7 </div> 8 </template> 9 10 <script> 11 export default { 12 name: "Login", 13 data(){ 14 return{ 15 phoneNum: '', 16 verifyCode: '' 17 } 18 }, 19 methods:{ 20 sendVerifyCode(phoneNum){ 21 console.log(phoneNum); 22 axios.post('http://localhost:8181/verifyCode/sendVerifyCode', phoneNum) 23 .then(response => { 24 console.log(response) 25 }) 26 }, 27 checkVerifyCode(phoneNum, verifyCode){ 28 console.log(phoneNum, verifyCode) 29 } 30 } 31 } 32 </script> 33 34 <style scoped> 35 36 </style>
后端:
1 @PostMapping("sendVerifyCode") 2 public String sendVerifyCode(@RequestBody String phoneNum){ 3 logger.info(phoneNum); 4 Boolean flag = verifyCodeService.setVerifyCode(phoneNum); 5 if(flag){ 6 return "success"; 7 } 8 return "failed"; 9 }
在后端接收參數時,發現參數值的末尾會自動添加一個等於號=
仔細分析就能發現,原來是沒有把參數包裝成FormData傳入,導致傳入的參數不正確:
所以顯然,我們需要再進行封裝,把參數封裝進FormData中
const formData = new FormData(); formData.append("phoneNum", phoneNum);
此時:
后端即可正確接收。