>백엔드 개발 >PHP 튜토리얼 >javascript - 如何用ajax post复杂json数据

javascript - 如何用ajax post复杂json数据

WBOY
WBOY원래의
2016-06-06 20:10:311069검색

<code>$(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');
    }
});
});</code>

新手,求问为什么这个老是显示error,也就是说post不成功?怎么改?后台接收的话用PHP怎么解析这个数据呢?

回复内容:

<code>$(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');
    }
});
});</code>

新手,求问为什么这个老是显示error,也就是说post不成功?怎么改?后台接收的话用PHP怎么解析这个数据呢?

将Json作为字符串进行编码,然后以一个参数传送到后台,在后台进行解码在解析json;

<code>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');
    }
});
});</code>

这样就把复杂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你看下有问题没

<code>$(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');
    }
});
});</code>

格式错误了,'test'和'2'后面的逗号都要去掉,你试下

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.