ajax传含有中文的json给php,如果json中的key是中文,php部分获取的结果不对

查看:59
本文介绍了ajax传含有中文的json给php,如果json中的key是中文,php部分获取的结果不对的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

ajax传含有中文的json给php,如果json中的key是中文,php部分获取的结果不对,key是英文,value是中文就没问题

这是$.ajax传给php的json串

  [
        {
            "user": {
                "user1": "user1"
            },
            "tab": {
                "表名": "表名"
            },
            "col": {
                "列名": "列名"
            },
            "isdmptab": "0",
            "lderrset": "stopld"
        },
        {
            "user": {
                "user1": "user1"
            },
            "tab": {
                "表名": "表名"
            },
            "col": {
                "列名": "列名"
            },
            "isdmptab": "0",
            "lderrset": "stopld"
        },
        {
            "user": {
                "user1": "user1"
            },
            "tab": {
                "表名": "表名"
            },
            "col": {
                "列名": "列名"
            },
            "isdmptab": "0",
            "lderrset": "stopld"
        },
        {
            "user": {
                "user1": "user1"
            },
            "tab": {
                "表名": "表名"
            },
            "col": {
                "列名": "列名"
            },
            "isdmptab": "0",
            "lderrset": "stopld"
        },
        {
            "user": {
                "user2": "user2"
            },
            "tab": {
                "表名": "表名"
            },
            "col": {
                "列名": "列名"
            },
            "isdmptab": "0",
            "lderrset": "stopld"
        }
    ]


这是php部分$_POST['tabmap']的输出
中文部分 结果不对

Array
(
    [0] => Array
        (
            [user] => Array
                (
                    [user1] => user1
                )

            [tab] => Array
                (
                    [0] => 表名
                )

            [col] => Array
                (
                    [0] => 列名
                )

            [isdmptab] => 0
            [lderrset] => stopld
        )

    [1] => Array
        (
            [user] => Array
                (
                    [user1] => user1
                )

            [tab] => Array
                (
                    [0] => 表名
                )

            [col] => Array
                (
                    [0] => 列名
                )

            [isdmptab] => 0
            [lderrset] => stopld
        )

    [2] => Array
        (
            [user] => Array
                (
                    [user1] => user1
                )

            [tab] => Array
                (
                    [0] => 表名
                )

            [col] => Array
                (
                    [0] => 列名
                )

            [isdmptab] => 0
            [lderrset] => stopld
        )

    [3] => Array
        (
            [user] => Array
                (
                    [user1] => user1
                )

            [tab] => Array
                (
                    [0] => 表名
                )

            [col] => Array
                (
                    [0] => 列名
                )

            [isdmptab] => 0
            [lderrset] => stopld
        )

    [4] => Array
        (
            [user] => Array
                (
                    [user2] => user2
                )

            [tab] => Array
                (
                    [0] => 表名
                )

            [col] => Array
                (
                    [0] => 列名
                )

            [isdmptab] => 0
            [lderrset] => stopld
        )

)

文件是utf-8编码

如果key是中文就不行,如果key不是中文就不出问题

解决方案

json字符串中的中文是以\u8868形式表示,这个问题是json字符串没有正确解析,无法识别中文,于是将数据以数组形式从0索引,所以结果不正确,
建议在前端将数据组合为js数组或对象,然后调用JSON.stringify($data);将数组转化为json格式然后再将这条数据ajax到后端,用json_decode解析,结果正确

$arr1['表名'] = "表名";
echo $a = json_encode($arr1);
$b = json_decode($a,true);
print_r($b);

输出

{"\u8868\u540d":"\u8868\u540d"}
Array
(
    [表名] => 表名
)

这篇关于ajax传含有中文的json给php,如果json中的key是中文,php部分获取的结果不对的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆