Home > Backend Development > PHP Tutorial > javascript - 如何用ajax post复杂json数据

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

WBOY
Release: 2016-06-06 20:10:31
Original
1082 people have browsed it

<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>
Copy after login
Copy after login

新手,求问为什么这个老是显示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>
Copy after login
Copy after login

新手,求问为什么这个老是显示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>
Copy after login

这样就把复杂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>
Copy after login

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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template