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解析,结果正确
输出