PHP脚本未接收到发布的JSON
PHP script not receiving posted JSON
我在以下JavaScript中遇到问题,其中数据是JavaScript对象:
var ajax_send = function(data) {
var httpRequest;
makeRequest('/prototype/test.php', data);
function makeRequest(url, data) {
if (window.XMLHttpRequest) {
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!httpRequest) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
httpRequest.onreadystatechange = alertContents;
httpRequest.open('POST', url);
httpRequest.setRequestHeader('Content-Type', 'application/json');
httpRequest.send(JSON.stringify(data));
}
function alertContents() {
if (httpRequest.readyState === 4) {
if (httpRequest.status === 200) {
alert(httpRequest.responseText);
} else {
alert('There was a problem with the request.');
}
}
}
};
PHP是:
$data = $_POST['data'];
$obj = json_decode($data);
echo $obj;
在开发工具中,请求负载看起来不错,但这似乎不是PHP想要的。PHP脚本中没有任何内容,响应为空。
我做错了什么?
当您使用Content-Type: application/json
发送POST请求时,PHP的工作方式有点不同。
你需要这样访问它:
$postData = json_decode(file_get_contents('php://input'));
而不是通常的CCD_ 2。
如果你想把它作为一个将被填充到$_POST
的常规表单发送,你需要这样设置你的标题:
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
并像这样填充您的字段:
key=value&key2=value2&key3=value3
etc
在Symfony上,您可以使用内部生成file_get_contents('php://input')
的$request->getContent();
)。然后解码结果。
$requestData = $request->getContent(); // this makes file_get_contents('php://input')
$data = json_decode($requestData, true);
相关文章:
- 不显示带有本地json文件数据的谷歌地图脚本
- Jquery:对返回JSON数据的php脚本的Ajax调用
- 在使用客户端脚本时拾取JSON对象
- 试图在Windows上执行package.json中的脚本会引发JScript错误
- 等效于<script src=“;something1.json”></脚本>
- 如何在json.erb模板中呈现脚本标记
- 如何为输出Json对象的ajax调用编写客户端脚本
- 从 JSON 获取键值对而不使用 .(DOT) 在 Java 脚本或 jquery 中
- 为什么我的JavaScript / JSON脚本不能在Internet Explorer中工作
- 我无法使用JSON将值从javascript传递给PHP脚本
- 使用jquery ajax访问php脚本返回的JSON
- 将JSON数组从PHP传递到Java脚本
- 如何从脚本页面返回json数据
- 如何向客户端返回带有双引号的字符串?脚本将其解析为JSON对象
- 使用 Json 获取 Twitter 提要,然后使用 PHP 将输出转换为 PHP 变量?- 推特-2-json脚本
- 在package.json脚本中调用特定的NodeJS函数
- 无法集成无限滚动到现有的工作JSON脚本
- npm包.Json脚本没有被调用
- 如何在运行 package.json 脚本时获取调试/详细信息
- Node.js package.json 脚本代码使用本地或全局库