Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过javascript使用Ajax Post向php传递Json不起作用_Php_Javascript_Ajax_Json_Post - Fatal编程技术网

通过javascript使用Ajax Post向php传递Json不起作用

通过javascript使用Ajax Post向php传递Json不起作用,php,javascript,ajax,json,post,Php,Javascript,Ajax,Json,Post,嗨,我正在尝试使用Javascript通过Ajax将Json发送到PHP。当我在firebug上查看数据时,index.html会正确发送数据。它用正确的数据显示Json类型。 然而,我似乎无法在php上读取JSON。我无法使用$\u POST访问它。 我尝试使用$_POST['name'],但没有响应。 当我尝试使用$\u POST时,响应是数组。 你能帮帮我吗 这是我的javascript代码 <html> <head> <script type="text/j

嗨,我正在尝试使用Javascript通过Ajax将Json发送到PHP。当我在firebug上查看数据时,index.html会正确发送数据。它用正确的数据显示Json类型。 然而,我似乎无法在php上读取JSON。我无法使用$\u POST访问它。 我尝试使用$_POST['name'],但没有响应。 当我尝试使用$\u POST时,响应是数组。 你能帮帮我吗

这是我的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>

//根据浏览器创建Http请求
var-xmlhttp;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=newXMLHttpRequest();}
其他的
{//IE6、IE5的代码
xmlhttp=newActiveXObject(“Microsoft.xmlhttp”);}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“myDiv”).innerHTML=xmlhttp.responseText;}
}
//创建函数
var url=“control.php”;
open(“POST”,url,true);
setRequestHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
var data=JSON.stringify({“name”:“John”,“time”:“2pm”});
发送(数据);
}
AJAX
请求数据
这是我的php代码

<?php
include_once('JSON.php');   
$json = new Services_JSON();
$value = $json->decode($_POST['name']);
echo $value;
?>

我已经为此工作了好几天,我真的很感谢你能提供的任何帮助。 谢谢大家!

这里是:

print_r($GLOBALS['HTTP_RAW_POST_DATA']);

我认为它需要首先解析整个帖子

<?php
include_once('JSON.php');   
$json = new Services_JSON();
$value = $json->decode($_POST);
echo $value;
?>
你不能就这么做吗

echo json_decode($_POST)
更好的解决方案(请参阅)是使用:


为什么不使用javascript库呢?使用jQuery.ajax();如果您在请求中遇到问题,请使用Firefox的Firebug插件(选项卡控制台或网络)进行调查,然后执行print\r($\u POST),您将看到您的$\u POST全局变量是什么。也许它会帮助你解决这个问题。谢谢你的评论和回答!我尝试按照您的建议使用echo json_decode($_POST),但给出的响应是空白的。当我尝试执行print\r($\u POST)时,给定的输出是arrray()。嘿!非常感谢!这为我解决了问题。你能给我指一份文档吗?在那里我可以读到$GLOBALS['HTTP_RAW_POST_DATA']在这种情况下工作的原因?不过还是非常感谢你们!您刚刚创建了my day=)您可以在这里找到它。但是当我遇到这样的问题时,我会做一些测试,比如(print\r($GLOBAL),print\r($\u SERVER))。这很有帮助。:)
echo json_decode($_POST)
$json = json_decode(file_get_contents("php://input"), true) ?: [];
print_r($json);