Javascript 读取php文件中通过ajax发送的json对象

Javascript 读取php文件中通过ajax发送的json对象,javascript,php,ajax,json,Javascript,Php,Ajax,Json,我试图解决在php文件中读取通过ajax请求发送的json对象的一个问题,我在控制台中保持gettin null Javascript文件 //create function to send ajax request function ajax_request(){ console.log("hello"); var post_data = { "news_data" : 'hello', "news_date" : '1st march' } $.ajax({ u

我试图解决在php文件中读取通过ajax请求发送的json对象的一个问题,我在控制台中保持gettin null

Javascript文件

//create function to send ajax request
function ajax_request(){
  console.log("hello");
 var post_data = {
    "news_data" : 'hello',
    "news_date" : '1st march'
}
$.ajax({
    url : 'index.php',
    dataType : 'json',
    type : 'post',
    data : post_data,
    success : function(data){
        console.log(data);
    }
 });
}

//on click event
$('#news_post_button').on('click', ajax_request);
和php文件,这只是为了测试,看看我得到什么

<?php
 header('Content-Type: application/json');



  $aRequest = json_decode($_POST);

  echo json_encode($aRequest[0]->news_data);

?>

尝试使用函数。 并以字符串形式打印您的帖子:

print_r($_POST);
echo '<br /> json_last_error: '.json_last_error();
print\r($\u POST);
echo“
json_last_error:”。json_last_error();
通过这种方式,您将看到您得到了什么以及可能出现了什么问题


为了测试这类东西,我建议使用chrome扩展。

您根本没有发送JSON对象

您正在向jQuery传递一个对象,因此它将使用标准表单编码对其进行序列化

<?php
   header('Content-Type: application/json');
   echo json_encode($_POST["news_data"]);
?>

如果要实际发送JSON文本,则需要:

  • 设置请求的内容类型
  • 将数据编码为JSON,并将其作为字符串传递给
    data


要读取JSON,您需要从STDIN读取,而不是按照/

$\u POST>读取。您可以在
$POST
变量中直接读取对象的属性,如下所示:

$_POST['news_data'] and $_POST['news_date']
<?php
header('Content-Type: application/json');
$post = $_POST;
echo json_encode($post['news_data']);
?>

您可以通过浏览器的开发者工具在“网络”选项卡中检查post VAR。

美元的
dataType
属性。post选项指定您希望作为响应从服务器接收的数据格式,而不是发送到服务器的数据格式。如果您通过方法POST发送数据,就像您使用$.POST一样,则无需调用
$aRequest=json\u decode($\u POST)。数据将以普通PHP数组的形式提供

如果您只想从服务器获取
news\u data
字段作为响应,您的服务器端脚本应该如下所示:

$_POST['news_data'] and $_POST['news_date']
<?php
header('Content-Type: application/json');
$post = $_POST;
echo json_encode($post['news_data']);
?>


请注意,您应该检查键
news\u data
是否已设置。

几乎没有错误,但最终还是找到了。我想投票支持你的答案,但我需要15岁。谢谢你。