微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax提交json数组乱码

最近在开发项目时,遇到了一个问题:使用ajax提交json数组时,后台接收到的数据格式全是乱码。

ajax提交json数组乱码

在排查问题的过程中,我们发现了两个原因:

一个原因是ajax请求认使用UTF-8编码,而我们后台使用的是GBK编码,所以接收到的数据就会出现乱码。

解决这个问题很简单,只需要在ajax请求中设置contentType为"application/json;charset=GBK"即可,如下代码

$.ajax({
    type: "POST",url: "test.PHP",data: JSON.stringify(data),contentType: "application/json;charset=GBK",success: function(response){
        console.log(response);
    }
});

第二个原因则是因为json数据中可能包含有特殊字符,如中文、空格、符号等。这些特殊字符在json序列化时会被转义成unicode编码,因此在后台接收到的数据就会变成一堆乱码。

解决这个问题也很简单,只需要在ajax请求中设置dataType为"text",然后在后台接收到数据后再进行反序列化,如下代码

$.ajax({
    type: "POST",dataType: "text",success: function(response){
        var jsonObj = JSON.parse(response);
        console.log(jsonObj);
    }
});

总结一下,提交json数组乱码的问题有两个原因,一是编码格式不一致,可以在ajax请求中设置contentType;二是json数据中包含有特殊字符,可以在ajax请求中设置dataType为"text",然后在后台接收到数据后再进行反序列化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐