正在读取php文件中通过ajax发送的json对象
Reading json object sent via ajax in php file
我试图解决一个问题,即在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);
?>
尝试使用json_last_error函数。并将你的帖子打印成字符串:
print_r($_POST);
echo '<br /> json_last_error: '.json_last_error();
通过这种方式,你会看到你得到了什么,以及可能出了什么问题。
为了测试这类东西,我建议Postman chrome扩展。
您根本没有发送JSON对象。
您正在向jQuery传递一个对象,因此它将使用标准的表单编码对其进行序列化。
<?php
header('Content-Type: application/json');
echo json_encode($_POST["news_data"]);
?>
如果您想实际发送JSON文本,那么您需要:
- 设置请求的内容类型
- 将数据编码为JSON,并将其作为字符串传递给
data
请参阅此答案以获取示例。
要读取JSON,您需要根据这个答案/
$_POST
您可以直接在$POST
var中读取对象的属性,如下所示:
$_POST['news_data'] and $_POST['news_date']
您可以通过浏览器的开发工具在网络选项卡中检查post-var。
$.post选项的dataType
属性指定您希望从服务器接收作为响应的数据格式,而不是您发送到服务器的数据格式。如果通过POST方法发送数据,就像使用$.POST一样,则无需在服务器端调用$aRequest = json_decode($_POST);
。数据将作为一个普通的PHP数组提供。
如果您只想从服务器获得news_data
字段作为响应,那么您的服务器端脚本应该如下所示:
<?php
header('Content-Type: application/json');
$post = $_POST;
echo json_encode($post['news_data']);
?>
请注意,您应该检查密钥news_data
是否已设置。
相关文章:
- 从ajax请求中获取javascript对象
- 在ajax调用中阻止来自JS对象的函数
- 无法在mvc视图中使用ajax调用获取操作返回的模型对象列表
- Spring Ajax列表返回,但对象为空
- 带有对象解析的响应javascript ajax失败
- 当使用ajax并将html数据保存为对象时,收听浏览器返回按钮.好的或坏的
- 如何在ajax中调用javascript对象的方法
- JQuery Deferred Ajax,将结果保存在调用对象中
- 使用jquery延迟对象链接多个ajax调用
- 在一行中生成 ajax 对象
- 试图理解为什么添加到DOM中的AJAX对象返回未定义的结果
- 将ajax对象转换为字符串
- 不能在IE中比较Jquery ajax对象
- 选择下拉ajax/对象映射
- PHP 不向 JavaScript Ajax 对象返回任何结果
- 如何获取 Ajax 对象的长度
- 用我自己的替换AngularJS或BreezeJS ajax对象来允许服务器端代理
- 用jquery重新启动ajax对象
- 如何完全重置自定义AJAX对象
- 无法对同一个ajax对象使用两个函数