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

 遇遇yuyu 发布于 2022-11-30 20:10
$(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怎么解析这个数据呢?

7 个回答
  • json格式错误,"test", "2" 后面都不需要 逗号

    2022-11-30 20:56 回答
  • 做json encode转换为字符串形式,php那边json_decode一下就行了,比如
    data:{values: $.jsonEncode({header:...})} //js端怎么jsonencode我忘了,自己查一下哈。
    然后
    $parameters = json_decode($_POST['values']);

    2022-11-30 20:56 回答
  • 后台接收的话用PHP:json_decode(file_get_contents('php://input'), true);

    2022-11-30 20:56 回答
  • 将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"]的值,然后解码解析;

    2022-11-30 20:56 回答
  • 首先 errror 是你的服务器没有返回 JSON 格式的数据,
    然后"head","body"后面应该跟字符串吧,
    最后在PHP端,可以 $_POST['head'] , $_POST['body']获取 head,body的字符串

    2022-11-30 20:56 回答
  • 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');
        }
    });
    });
    2022-11-30 20:56 回答
  • 格式错误了,'test'和'2'后面的逗号都要去掉,你试下

    2022-11-30 20:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有