Javascript axios http始终返回空数据
我以前问过这个问题,但没有得到答案。我可以使用下面的方法:“get”让它工作,所以这没关系,但这次我需要使用post。在另一个项目中(使用react、redux、php、webpack、xampp),同样的问题再次出现,我正在努力解决它。这就是: register.phpJavascript axios http始终返回空数据,javascript,php,reactjs,redux,axios,Javascript,Php,Reactjs,Redux,Axios,我以前问过这个问题,但没有得到答案。我可以使用下面的方法:“get”让它工作,所以这没关系,但这次我需要使用post。在另一个项目中(使用react、redux、php、webpack、xampp),同样的问题再次出现,我正在努力解决它。这就是: register.php echo $_GET['task']; echo $_POST['task']; index.js const values = {task: 'doSomething', username: 'username'
echo $_GET['task'];
echo $_POST['task'];
index.js
const values = {task: 'doSomething', username: 'username'}
axios({
url: "./server/register.php",
timeout: 20000,
method: 'get',
params: values
}).then(function(response){console.log(response.data)})
axios({
url: "/projects/myProject/server/register.php",
method: 'post',
data: values
}).then(function(response){console.log(response.data)})
当我完成上述操作时,一切正常,数据以“doSomething”的形式注销。但是,当我尝试使用axios({method:'POST'})并将php更改为$_POST['task']时,我得到一个错误,即$_POST['task']未定义,如下所示:
index.js
const values = {task: 'doSomething', username: 'username'}
axios({
url: "./server/register.php",
timeout: 20000,
method: 'get',
params: values
}).then(function(response){console.log(response.data)})
axios({
url: "/projects/myProject/server/register.php",
method: 'post',
data: values
}).then(function(response){console.log(response.data)})
register.php
echo $_GET['task'];
echo $_POST['task'];
注意:未定义索引:task
当我尝试使用axios.post()时,我也遇到了完全相同的问题。我想在这里使用post请求。有人能帮我解释一下吗?你的url格式不好:它是路径而不是url。您必须使用相对的(/register.php)或绝对的()url,这取决于您如何在web服务器上提供此文件。好的,在我费尽心思之后,我找到了答案。在PHP上,必须先添加这一行,然后才能访问任何POST数据:
$_POST = json_decode(file_get_contents('php://input'), true);
echo $_POST['task'];
据我所知,从axios输入的数据是JSON,因此我们必须使用file_get_contents()以JSON编码字符串的形式返回它,然后使用JSON_decode将其从JSON编码字符串转换为php变量。希望这对其他人有帮助。多谢各位 另一种选择是,在客户端,您可以在发布之前对JavaScript中的数据进行按摩,从而无需在服务器端编辑发布数据:
var formatAxiosPostData = function (obj) {
// Create formData object:
var formDataObject = new FormData();
// This step necessary when the obj contains additional overhead data,
// such as what's created on a 'this.$data' Vue.js object:
obj = JSON.parse(JSON.stringify(obj));
// Fill formData object with the key-value pairs:
Object.keys(obj).forEach(function (key) {
formDataObject.append(key, obj[key]);
});
return formDataObject;
};
// example usage:
axios({
url: "/projects/myProject/server/register.php",
method: 'post',
data: formatAxiosPostData(values)
}).then(function (response){
console.log(response.data);
});
我尝试了两种方法,并更新了我的问题,将其包括在内。不幸的是,我仍然得到同样的错误。未定义。您有一个为register.php服务的web服务器,对吗?是的,我有。谢谢您的帮助。在我发现问题后,我补充了上面的答案。