php - 使用原生 javascript 发送 json

标签 php javascript ajax xmlhttprequest

我想使用 native javascript 将 json 发送到 php 文件。为什么 get-translation.php 中的 $_POST 是空的?

var xmlhttp;
json_data = JSON.stringify(a_data);

if (window.XMLHttpRequest)
{
     xmlhttp=new XMLHttpRequest();
}
else
{
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.open("POST","get-translation.php",true);
xmlhttp.setRequestHeader("Content-type","application/json");

xmlhttp.send(json_data); // json_data is simple json

最佳答案

$_POST 仅适用于默认内容类型 application/x-www-form-urlencoded。 对于任何其他类型的数据(包括 JSON),您需要解析原始输入流。

file_get_contents('php://input') 将返回原始请求正文。由于这是 JSON,因此需要使用 json_decode 将 json 数据解析为关联数组。

$jsonData = json_decode(file_get_contents('php://input'));

关于php - 使用原生 javascript 发送 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17790447/

相关文章:

javascript - 带有 PHP 的 HTML 表单 - 提交并停留在同一页面上

javascript - 调用驻留在不同文件夹中的 javascript 文件

javascript - 构建调用以更新全局和本地状态

javascript - 时钟选择器不显示时钟

PHP 返回 JS UTC 日期格式

php - 调用未定义的方法 DbConn::prepare()

php - mysql 数据库中的瑞典字符在调用 php/html 时会导致空结果

javascript - Ruby Rails - 带有 AJAX POST 的 Javascript 在本地工作但不能在 Heroku 上工作

javascript - Rails AJAX 请求 Controller 方法,然后调用 javascript 函数

javascript - 在单线程环境中这种 Jquery 行为如何可能?