当前位置: 首页 > 知识库问答 >
问题:

Axios超文本传输协议总是返回空数据

松嘉颖
2023-03-14

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

register.php

  echo $_GET['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({方法:'POST'})并将php更改为$_POST['任务']时,我得到一个错误,说$_POST['任务']是未定义的,如下所示:

index.js

  axios({
      url: "/projects/myProject/server/register.php",
      method: 'post',
      data: values
  }).then(function(response){console.log(response.data)})

register.php

echo $_POST['task'];

注意:未定义索引:任务

当我尝试使用axios时也是如此。post()我遇到了完全相同的问题。我想在这里使用post请求。有人能帮我解释一下吗?


共有3个答案

周通
2023-03-14

或者,在客户端,您可以在发布之前在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);
});
路思源
2023-03-14

你的url格式不好:它是路径而不是url。您必须使用相对(/register.php)或绝对(http://localhost/register.php)url,这取决于您如何通过Web服务器提供此文件。

罗华翰
2023-03-14

好吧,经过一番努力,我终于找到了答案。在PHP上,必须先添加这一行,然后才能访问任何POST数据:

$_POST = json_decode(file_get_contents('php://input'), true);
echo $_POST['task'];

据我所知,从axios输入的数据是JSON,因此我们必须使用file_get_contents()以JSON编码字符串的形式返回它,然后使用JSON_decode将其从JSON编码字符串转换为php变量。希望这对其他人有帮助。非常感谢。

 类似资料:
  • 我正在尝试执行以下Sparql查询 它运行良好,并产生所需的结果http://localhost:7200/sparql即。GraphDB工作台。我想使用python做同样的查询,为此我生成以下查询URL通过点击"获取URL到当前查询"在GraphDB界面。 我试着为此写Python代码 但是,这会返回:错误-http状态(404)-无消息,请查看服务器日志以了解更多信息 在Python中查询Gr

  • 我正在使用certbot为我的网站创建SSL,并使用Nginx进行服务。然而,即使我在nginx conf中更改服务器块并重新启动它,只有原来的http工作,而https将返回ERR_CONNECTION_TIMED_OUT。 我在互联网上尝试了很多方法,包括将服务器块一分为二,调整listen 443设置,添加服务器名称。。。但所有这些似乎都不起作用,使用url和https将返回ERR_CONN

  • 我有一个由Python构建的API服务器。我需要一组客户端/计算机通过发出http post请求将数据发送到API服务器。 这里的数据实际上是html内容。(注意:我没有将合法数据转换为HTML/XML格式,数据本身就是我从web上收集的HTML),通常每页约200KB。我正试图通过使用串行/串行和压缩来尽可能减轻网络负载。 我正在考虑通过网络发送原始超文本标记语言。有没有类似序列化html对象的

  • 我正在使用GWT和Spring controller来管理http流量。有些请求可能需要很长时间,但我希望在超过给定时间时终止请求。 我如何配置超时Spring。我也使用Apache Tomcat 7.0。我试图在tomcat上inrease最大线程,但有一段时间tomcat工作缓慢,因为请求线程不会死。

  • 我正在使用oauth签名生成我的oauth签名,以便与woocommerce api连接。我遵循了woocommerce rest api文档中所述的所有步骤: 所需的参数是:oauth_consumer_密钥、oauth_时间戳、oauth_nonce、oauth_签名和oauth_签名方法。oauth_版本不是必需的,应该省略。OAuth nonce可以是消费者密钥唯一的任意随机生成的32个字

  • 我只是有一个关于服务中http请求的结构和处理响应的问题。我正在使用Angular2。alpha46 Typescript(刚刚开始测试-我喜欢它…Ps…。感谢所有一直致力于它并通过github作出贡献的人) 因此,采取以下措施: 登录表单。组成部分ts 从这个组件中,我导入了我的userService,它将容纳我的超文本传输协议请求,以登录用户。 使用者服务ts 我想做的是能够处理http请求之