axios,post请求传递不了参数

new Vue({
    el: '.box',
    data: {},
    methods: {
        get: function() {
            axios({
                method: 'post',
                url: 'post.php',
                data: {
                    a: '1'
                }
            }).then(function(response) {
                alert(response.data);
            }).catch(function(error) {
                alert(error);
            });
        }
    }
});

post.php 文件

$a=$_POST['a'];
$b=$_POST['b'];
echo $a;

大家帮我看看是什么原因,是post请求还需要转换吗

阅读 32.8k
9 个回答

首先,可以试着把axios请求部分换成:

axios.post('post.php', {
    a: '1'
}).then(function(response) {
    alert(response.data);
}).catch(function(error) {
    alert(error);
});

另外,由于axios默认发送数据时,数据格式是Request Payload,而并非我们常用的Form Data格式,PHP后端未必能正常获取到,所以在发送之前,需要使用qs模块对其进行处理。

import qs from 'qs';
...
axios.post('post.php', qs.stringify({
    a: '1'
}))
.then( ... )
.catch( ... );
var qs = require('qs');


var data = qs.stringify({ 
    a: 1 
}
axios.post('post.php', data)
.then(function(data){
    alert(response.data);
);

try it!

从浏览器看网络请求啊,貌似要指定content-type

你把data换成JSON字符串试试

axios.post('test.php', $.param({
    firstName: 'Fred',
    lastName: 'Flintstone'
}))

// transformRequest 允许在向服务器发送前,修改请求数据
// 只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法
// 后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 Stream
transformRequest: [function (data) {

// 对 data 进行任意转换处理

return data;

}],

return Axios({

  method: method,
  url: url,
  params: params,
  headers: { 'Content-type': 'application/json' }
}).then((response) => {

  const res = response.data;
  return res;

}).catch((error) => {
  
  return error;
});

}
}

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