javascript - 如何用ajax post复杂json数据
$(function(){
$.ajax({
url:'check.php', //api接口地址
data:{
"head": {
"name": "test",
},
"body": {
"age ": "2",
}
},
type:'post', //数据传输方式
dataType:'json',//数据传输格式
cache:false,
success:function(data) {
//执行成功后的回调函数,data为返回的数据
alert(data);
},
error : function() {
alert('error');
}
});
});
新手,求问为什么这个老是显示error,也就是说post不成功?怎么改?后台接收的话用PHP怎么解析这个数据呢?
回复内容:
$(function(){
$.ajax({
url:'check.php', //api接口地址
data:{
"head": {
"name": "test",
},
"body": {
"age ": "2",
}
},
type:'post', //数据传输方式
dataType:'json',//数据传输格式
cache:false,
success:function(data) {
//执行成功后的回调函数,data为返回的数据
alert(data);
},
error : function() {
alert('error');
}
});
});
新手,求问为什么这个老是显示error,也就是说post不成功?怎么改?后台接收的话用PHP怎么解析这个数据呢?
将Json作为字符串进行编码,然后以一个参数传送到后台,在后台进行解码在解析json;
var json={
"head": {
"name": "test",
},
"body": {
"age ": "2",
}
};
var str=JSON.stringify(json);
$(function(){
$.ajax({
url:'check.php', //api接口地址
data:{json:escape(str)},
type:'post', //数据传输方式
dataType:'json',//数据传输格式
cache:false,
success:function(data) {
//执行成功后的回调函数,data为返回的数据
alert(data);
},
error : function() {
alert('error');
}
});
});
这样就把复杂Json对象作为一个参数传递到后台。
php后台接收:POST["json"]的值,然后解码解析;
json格式错误,"test", "2" 后面都不需要 逗号
做json encode转换为字符串形式,php那边json_decode一下就行了,比如
data:{values: $.jsonEncode({header:...})} //js端怎么jsonencode我忘了,自己查一下哈。
然后
$parameters = json_decode($_POST['values']);
后台接收的话用PHP:json_decode(file_get_contents('php://input'), true);
首先 errror 是你的服务器没有返回 JSON 格式的数据,
然后"head","body"后面应该跟字符串吧,
最后在PHP端,可以 $_POST['head'] , $_POST['body']获取 head,body的字符串
age
后面有空格吗?记得type
应该是POST吧,还有dataType
你看下有问题没
$(function(){
$.ajax({
url:'check.php', //api接口地址
data:{
"head": {
"name": "test",
},
"body": {
"age": "2",
}
},
type:'POST', //数据传输方式
dataType:'application/json',//数据传输格式
cache:false,
success:function(data) {
//执行成功后的回调函数,data为返回的数据
alert(data);
},
error: function() {
alert('error');
}
});
});
格式错误了,'test'和'2'后面的逗号都要去掉,你试下