传递JSON使用Ajax发布通过JavaScript到PHP不工作
嗨,我想通过Ajax发送JSON到PHP使用Javascript。当我在firebug上查看数据时,index.html会正确发送数据。它显示Json类型与正确的数据。 但是,似乎我无法阅读php上的JSON。我无法使用$ _POST访问它。 我试过使用$ _POST ['名称']并没有响应。 当我尝试使用$ _POST时,响应是数组。 你能帮我吗?传递JSON使用Ajax发布通过JavaScript到PHP不工作
这是我的javascript代码。
<html>
<head>
<script type="text/javascript">
//Create Http request depending on browser
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;}
}
// Function to create
var url = "control.php";
xmlhttp.open("POST",url,true);
xmlhttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
var data=JSON.stringify({"name":"John", "time":"2pm"});
xmlhttp.send(data);
}
</script>
</head>
<body>
<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">Request data</button>
<div id="myDiv"></div>
</body>
</html>
这是我的PHP代码
<?php
include_once('JSON.php');
$json = new Services_JSON();
$value = $json->decode($_POST['name']);
echo $value;
?>
一直在这几天,我真的很感激任何帮助,您可以提供。 谢谢!
这里是:
print_r($GLOBALS['HTTP_RAW_POST_DATA']);
嘿!非常感谢!这解决了我的问题。你能指点我一个文件,在这里我可以读到为什么$ GLOBALS ['HTTP_RAW_POST_DATA']在这种情况下工作?但尽管如此,非常感谢你们!你只是让我的日子=) – shaoming
你可以在这里找到[PHP手册](http://cn.php.net/manual/en/reserved.variables.httprawpostdata.php)。但我会做一些测试,如(print_r ($ GLOBAL),print_r($ _ SERVER))当我有这样的问题。这是有帮助的。 :) –
我认为它需要首先分析整个职位。
<?php
include_once('JSON.php');
$json = new Services_JSON();
$value = $json->decode($_POST);
echo $value;
?>
但是您是否也需要这些包括? http://www.php.net/manual/en/function.json-decode.php
include_once('JSON.php');
$json = new Services_JSON();
可以不只是你这样做吗?
echo json_decode($_POST)
嗨,感谢所有的评论和答案!我试着使用echo json_decode($ _ POST),正如你所建议的那样,但是给出的响应是空白的。当我尝试执行print_r($ _ POST)时,给定的输出是arrray()。 – shaoming
一个更好的解决方案(见here)是使用:
$json = json_decode(file_get_contents("php://input"), true) ?: [];
print_r($json);
为什么不使用javascript库? –
使用jQuery.ajax();如果您使用Firefox的Firebug插件(Tab Console或Network)请求调查时遇到问题 – peipst9lker
执行print_r($ _ POST),您将看到$ _POST全局变量是什么。也许它会帮助你解决问题 –