axios post传值给php无法获取,值为空

vue

el:'#app',
data: {
    message: 'Hello Vue!'
},
mounted(){

    var foot_data = new URLSearchParams();
    foot_data.append('number1','111');
    foot_data.append('number2','222');

    axios.post('http://localhost/demo.php',foot_data).then(res=> {
        console.log(res);
    });
}

demo.php

$str = $_POST['number2'];
var_dump($str);
var_dump($_POST);

控制台已经把数据返回回来了
图片描述
图片描述

但是demo.php却没有接收到该值

Notice: Undefined index: number2 in E:vuedemodemo.php on line 9
NULL array(0) { }

想知道是哪个地方出错了,求解。。。。
图片描述

我再补张图,这是php返回的错误

阅读 5.6k
5 个回答

我就知道是这样。。。

$_POST 变量用于收集来自 method="post" 的表单中的值

demo.php里的数据是要前端POST提交的,没有前端提交数据直接访问文件当然没数据。
直接访问php,$_POST为空,因为没有提交的数据;$_POST为空,$_POST['number2']自然就报错。

而在
图片描述

里,你是提交数据到了demo.php,所以php正常输出了

就像抽烟,你需要烟(demo.php)和打火机(前端POST提交数据),你只有烟(demo.php)有什么用


???

但是demo.php却没有接收到该值

是什么意思?你不是都打印出来了吗?
图片描述
这就是php打印的啊

还有你报错的截图看看

我碰到的问题跟你这个相似
我用的是

let fd=new FormData()
fd.append('a','xxxx')
fd.append('b','xxx')
    

你都post了, 为什么还要用 URLSearchParams ? 直接传, 然后用 qs.stringify 试一下

axios.post('http://localhost/demo.php',qs.stringify({number1:222, number2:222})).then(res=> {
        console.log(res);
    });

axios post的data选项如果设置成了对象模式{username:'xxx',password:231}就都会以json数据的形式发送给后端。如果php要用$_POST获取数据的话。data选项要设置为key,value形式
axios({

url:'http://example.com',
method: 'POST',
data: 'useranem=xxx&pass=1234'

})

安装qs ,数据转化为qs.stringtry({}),就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题