使用axios发送请求,遇到会发两次的情况
在学习php&mySQL的过程中,前端nuxt用(vue官方推荐的)axios发送post请求,以实现向数据库插入页面提交数据的功能。
发现功能是实现了,但数据库中表的数据是这样的
很莫名其妙的多出空行,由于是初学者,费了好长时间找是不是自己php连接数据库的代码出了什么问题,但并没有发现疏漏。
于是找回前端,确定axios请求只触发了一次后,看了下浏览器控制台network,发现每次点击提交都会出现2次请求,对比一下发现第一次请求是这样的
下边的login.php才是正常的post请求。那么本着不懂就要问的不要脸精神,去网上找答案:
https://blog.csdn.net/Homer_Simpson/article/details/89188068
写得很明白,复杂请求,就会自动进行一次预请求,和我们没关系。那么尝试解决这个问题:php中做一下判断
1 if (!$_SERVER['REQUEST_METHOD']=== 'POST') { 2 die('不是post请求忽略'); 3 }
自己是个菜鸟,看php连接数据库的写法是这样的:
就给die()方法也拿过来试一哈,结果不出意料的失败了。于是接着找:
https://blog.csdn.net/qq_30378229/article/details/78576625
写得原因是一样的,但这个给出了解决的代码:
1 if(strtoupper($_SERVER['REQUEST_METHOD'])== 'OPTIONS'){ 2 echo 'options请求,已忽略。'; 3 exit; 4 }
亲测有效,真是感谢两位素未谋面的朋友。虽然自己加上去的输出语句并没有打印出来(笑cry),但数据库中的数据已经完全正常: