`
hyj1254
  • 浏览: 342289 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转化服务器端传回的JSON数据

阅读更多
  讲讲JS的内置函数eval()的用法.
  最初用到它是为了将后台传送过来的JSON格式的字符串转化为JSON对象。后来发现它的功能的确很强大,远不止这点,但今天只讲它。如果想深入了解可以参考下W3School。
进入正题:
<script>
var json='{"id":1}';
alert(json.id); 
</script>

如果仔细看,可以发现,上面那段代码弹出的对话框是不能把id显示出来的。原因就是json只是个字符串对象而并不是真正的JSON对象,注意最外边那两个单引号
<script>
var json={"id":1};//去掉单引号
alert(json.id); 
</script>

去掉单引号,id就成功显示了。此时的json就是个JSON对象。

现在从服务器端传回的JSON数据就是像第一个例子那样带单引号的,是不能直接使用的。那怎么办呢?
答案就是开头提到的eval()函数。
<script>
var json='{"id":1}';
var jsonObj=eval("("+json+")");//注意这一行
alert(jsonObj.id); 
</script>

id成功显示。
注意两个要点
1、json如果只是单个对象,而不是对象数组,如上例所示,则不能直接写成eval(json).
2、不能把eval("("+json+")") 写成eval('("+json+")'),否则id照样不会显示。

再举一例:
<script>
var json='[{"id":1}]';
var jsonObj=eval(json);
alert(jsonObj[0].id); 
</script>

id照样能成功显示。注意区别:json包含的是一个对象数组,而非单个对象。但为什么这样就可以,而前面的例子却不可以,我就稀里糊涂了,还请大侠赐教。


1
0
分享到:
评论
1 楼 蓝语调 2011-03-28  
加括号是为了明确这是一个对象,这样解析起来才不会产生歧义。

相关推荐

    json的jar包

    在AJAX中,服务器端处理完数据后,可以通过JSON格式返回一个列表(list)或者数组给前端页面,前端的JavaScript代码可以直接将这些数据转化为JavaScript对象,从而更新DOM,实现页面的局部刷新。相比于XML,JSON的...

    java js图片上传回显

    首先,我们需要理解这两个技术的角色:Java通常作为服务器端语言,处理文件的接收、存储以及返回响应;而JavaScript则在客户端运行,负责用户交互和页面动态更新。 1. **前端JavaScript实现图片预览** - **...

    flash(as3.0)涂鸦板(仿QQ涂鸦游戏)并与ASP结合实现保存涂鸦内容到本地

    7. 数据存储:将涂鸦数据保存在服务器端,可能涉及数据库(如SQL Server)或文件系统(如XML文件)。 8. 回放功能:通过重新执行保存的动作序列,再现用户的绘画过程。 9. 客户端-服务器通信:使用HTTP协议,通过...

    用webservice 连接 flex 加 c#.net

    4. **解析与展示**:Flex客户端接收到响应后,解析XML或JSON数据,将其转化为可操作的对象,最后将天气信息显示在用户界面上。 这个项目示例可以帮助开发者了解Flex与C#.NET之间的集成方式,以及如何通过WebService...

    jabsorb应用案例

    同时,服务器端的异常也会被包装并传回给客户端。 7. **安全性考虑**:JabSorb支持HTTPS,可以为你的远程调用提供安全的传输层。你可能需要配置SSL证书以确保数据的安全性。 8. **性能优化**:JabSorb可以通过缓存...

    手动搭建rpc

    这通常涉及到数据的序列化和反序列化,如JSON、XML或二进制编码。 3. **网络通信**:实现客户端与服务器之间的通信协议,如TCP、UDP或HTTP。需要处理连接建立、消息发送与接收、错误处理等。 4. **服务注册与发现*...

Global site tag (gtag.js) - Google Analytics