jquery如何获取php返回的json对象?

change丶 2016-03-28 10:10:01
php向客户端返回了一个json对象,具体是这么写的:
$data = json_encode($query);
echo $data;

我在客户端对他进行alert 这是处理代码和得到的结果:
$.ajax({
url:"serverPage/findRecvman.php",
type:"POST",
async:"true",
dataType:"json",
data:{ my_unit:encodeURI($("#"+id).val())},
success:function (data)
{
alert(data);
}
})


显示的是object,那么如何获取这个json对象中属性的值呢?
...全文
921 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Link_SRF 2017-04-22
  • 打赏
  • 举报
回复
alert(JSON.stringify(json));
xuzuning 2016-03-28
  • 打赏
  • 举报
回复
json_encode 不是不支持中文,而是只支持 utf-8 字符集 如果你是 gbk 的程序,那么应在 json_encode 之前执行一下转码 设数据在 $data 数组中 array_walk_recursive($data, function(&$v) { $v = iconv('gbk', 'utf-8', $v); }); 再 echo json_encode($data); 这样就没有问题了
change丶 2016-03-28
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
%B4%DE%CB%B9%CC%DB 崔斯疼(gbk编码) 你们的 php 程序员真够可以的,在 php 中很容易返程的事情(转码) 非要让 js 去完成,须知 js 实现 gbk 到 unicode 的转换是需要用查表法的,也就是说你需要将整个 gbk 字库都放在程序里
主要是服务器端返回的是一个数组,带中文,json_encode函数不支持中文,我就对数组遍历,给每个属性进行了URL编码然后才能使用json_encode 所以返回到客户端的json对象中的属性都是url编码的字符串,我现在就是不了解如何在js中给这个字符串解码,因为没想到什么方法可以在服务器端转码json中对象的。
xuzuning 2016-03-28
  • 打赏
  • 举报
回复
%B4%DE%CB%B9%CC%DB 崔斯疼(gbk编码) 你们的 php 程序员真够可以的,在 php 中很容易返程的事情(转码) 非要让 js 去完成,须知 js 实现 gbk 到 unicode 的转换是需要用查表法的,也就是说你需要将整个 gbk 字库都放在程序里
change丶 2016-03-28
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
你把 dataType:"json", 恢复回来
jq 就会帮你解码,无需烦劳您的大驾


您看,这是我处理data的代码
success:function (data)
{
for(var key in data)
{
alert(data[key].nickname);
}
}

出来的结果就是这个


他的值还是编码状态
xuzuning 2016-03-28
  • 打赏
  • 举报
回复
你把 dataType:"json", 恢复回来 jq 就会帮你解码,无需烦劳您的大驾
xuzuning 2016-03-28
  • 打赏
  • 举报
回复
你把 dataType:"json", 先注释掉 alert(data) 就可看到都返回了什么 然后再决定如何处理
change丶 2016-03-28
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
你把 dataType:"json", 先注释掉 alert(data) 就可看到都返回了什么 然后再决定如何处理
我看到了返回的是url编码的字符串,在服务器端本来返回的是中文,现在我想把中文重新解码出来
change丶 2016-03-28
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
alert(data.name); //比如有个 name 属性 不要说不知道属性名,ajax 不能跨域,自己的网站连数据是什么样的都不知道,这是说不过去的
如果在服务器端使用urlencode给数组每个属性编码了,我在客户端要怎么解码?
xuzuning 2016-03-28
  • 打赏
  • 举报
回复
alert(data.name); //比如有个 name 属性 不要说不知道属性名,ajax 不能跨域,自己的网站连数据是什么样的都不知道,这是说不过去的
change丶 2016-03-28
  • 打赏
  • 举报
回复
引用 1 楼 slwsss 的回复:
alert(data.属性);
我在服务器端给属性的值都编码了,如何解码呢?
slwsss 2016-03-28
  • 打赏
  • 举报
回复
alert(data.属性);
change丶 2016-03-28
  • 打赏
  • 举报
回复
引用 11 楼 xuzuning 的回复:
json_encode 不是不支持中文,而是只支持 utf-8 字符集 如果你是 gbk 的程序,那么应在 json_encode 之前执行一下转码 设数据在 $data 数组中 array_walk_recursive($data, function(&$v) { $v = iconv('gbk', 'utf-8', $v); }); 再 echo json_encode($data); 这样就没有问题了
了解!问题解决了!感谢!!

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧