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

时间:2015-03-05 14:08:35

标签: 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({
    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);

?>

4 个答案:

答案 0 :(得分:0)

尝试使用json_last_error功能。 并将您的帖子打印成字符串:

print_r($_POST);
echo '<br /> json_last_error: '.json_last_error();

这样你就会看到你得到了什么以及可能出了什么问题。

为了测试这类内容,我建议Postman chrome扩展。

答案 1 :(得分:0)

您根本不发送JSON对象。

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

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

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

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

请参阅this answer for an example

要阅读JSON,您需要根据this answer /

从STDIN而不是$_POST读取

答案 2 :(得分:0)

您可以直接在$POST var中读取对象的属性,如下所示:

$_POST['news_data'] and $_POST['news_date']

您可以在网络标签中通过浏览器的开发者工具查看帖子变量。

答案 3 :(得分:0)

$ .post选项的{ linux: [Getter], windows: [Getter], mac: [Getter] }属性指定您希望从服务器接收的数据格式作为响应,而不是您发送到服务器的数据格式。如果您通过 POST 方法发送数据 - 就像您一样,如果您使用$ .post - 则无需在服务器端调用dataType。数据将以普通PHP数组的形式提供。

如果您只想将$aRequest = json_decode($_POST);字段作为服务器的响应,那么您的服务器端脚本应如下所示:

news_data

请注意,您应该检查密钥<?php header('Content-Type: application/json'); $post = $_POST; echo json_encode($post['news_data']); ?> 是否已设置。