前端向后端发送post请求,如何将发送的json数据序列化?

代码:

 $.ajax({
                    type        : 'post',
                    url         : 'test.php',
                    data        : {
                                        'Data' : {
                                            'Mark' : 4,
                                            'PhoneNumber' : 12312312312
                                        }
                                   },
                    success     : function(res){
                        // 请求成功
                       console.log(res);
                    }         
               });

但是 出现如下情况

 
 Form Data
   Data%5BMark%5D=4&Data%5BPhoneNumber%5D=12312312312
   后端拿到数据没法处理数据了,
   为什么会这样呢?怎么让发的数据变为{"Data":{"Mark":4,"PhoneNumber":"12312312312"}}呢?
阅读 9.5k
5 个回答

$.ajax({

        type : 'post',
        url  : 'test.php',
        data : JSON.stringify({
                Data : {
                    Mark : 4,
                    PhoneNumber : 12312312312
                }
           }),
        success : function(res){
           console.log(res);
        }         
   });
   这样试试

data单引号呢

设置contentType: "application/json",data也必须是JSON,JSON是双引号的。

之前项目用到的ajax传递给后台进行参数序列化,供参考:

$(function() {
        var params = {
            name: 'admin',
            address: {
                province: '浙江',
                city: '杭州'
            },
            fids: [1, 2],
            friends: [{
                name: '张三',
                age: 10
            }, {
                name: '李四',
                age: 15
            }]
        };
        $.ajax({
            url: '后台接口地址',
            type: 'GET',
            data: $.param(serializeObjects(params)),
            traditional: true,
            success: function(result) {
                // 成功函数
            },
            error: function() {
                console.log('error');
            }
        });
        // 对参数进行特殊转化
        function serializeObjects(params) {
            var obj = {};
            for (var k in params) {
                var o = params[k];
                if ('[object Array]' === Object.prototype.toString.call(o))
                    for (var i = 0; i < o.length; i++) {
                        var o1 = o[i];
                        if ('[object Object]' === Object.prototype.toString.call(o1))
                            for (var k1 in o1) obj[(k + '[' + i + '].' + k1).toString()] = o1[k1];
                        else obj[(k + '[' + i + ']').toString()] = o1;
                    } else if ('[object Object]' === Object.prototype.toString.call(o))
                        for (var k2 in o) obj[(k + '.' + k2).toString()] = o[k2];
                    else obj[k.toString()] = o;
            }
            return obj;
        }
    })
contentType: "application/json",
data:JSON.stringify({'Data':{'Mark' : 4,'PhoneNumber' : 12312312312}})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题