【问题标题】:Send json object using POST pure javascript [duplicate]使用POST纯javascript发送json对象[重复]
【发布时间】:2016-05-24 06:42:40
【问题描述】:

我想将JSON object 发送到PHP 服务器,但我在那里得到一个空数组。为什么会这样?

var obj = {
    username: username,
    password: password
};

var ajax = new XMLHttpRequest();
ajax.open('post', 'ajax/login_register.php');
ajax.setRequestHeader("Content-type", "application/json;charset=UTF-8");
ajax.send(JSON.stringify(obj));

【问题讨论】:

  • 你就是这样做的。问题一定是你如何读取数据。
  • $_POST ? @昆汀
  • 就是这样。 JSON 请求不会填充 $_POST。请参阅重复的问题。
  • 尝试将请求头设置为application/x-www-form-urlencoded 而不是application/json;charset=UTF-8 ;-)
  • @MikeC — 问题中的代码对于发送它是正确的。 OP 的评论表明问题出在他们如何尝试接收它。

标签: javascript php json ajax


【解决方案1】:

你需要给它一个你可以在服务器端引用的名字。

ajax.send('user=' + encodeURIComponent(JSON.stringify(obj)));

$_POST['user'] // <-- your JSON string

【讨论】:

  • 我已经尝试过这种方式并且有效,但是 jQuery 是如何做到的,所以我们不在后端使用 $_POST['user']
  • 这不会发送 JSON 请求。它将发送一个(很糟糕,因为您忘记使用encodeURIComponent)表单编码请求,其中嵌入了 JSON 文本。
  • 您的意思是您可以通过$_POST 访问各个属性吗?这是通过提取每个属性并将其作为单独的属性发送来完成的。
  • @rexhin 是的,可以。
  • @rexhin 差不多。每个值都必须有一个匹配的名称。由你决定如何分配。
猜你喜欢
  • 2014-02-07
  • 2022-06-14
  • 2016-10-21
  • 2011-11-11
  • 2017-12-06
  • 2011-09-19
  • 1970-01-01
相关资源
最近更新 更多