Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript axios http始终返回空数据_Javascript_Php_Reactjs_Redux_Axios - Fatal编程技术网

Javascript axios http始终返回空数据

Javascript 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'

我以前问过这个问题,但没有得到答案。我可以使用下面的方法:“get”让它工作,所以这没关系,但这次我需要使用post。在另一个项目中(使用react、redux、php、webpack、xampp),同样的问题再次出现,我正在努力解决它。这就是:

register.php

  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服务器,对吗?是的,我有。谢谢您的帮助。在我发现问题后,我补充了上面的答案。