一,情况如下,这是成功代码:

       $(function () {
$.ajax({
url: "Demo.aspx",
type: "post",
data: { Id: "" },
success: function (data) {
var obj1 = eval("(" + data + ")");
alert(obj1[0].ProductClass_ID);
}
});
})

然而如果将var obj1 = eval("(" + data + ")");,改为 var obj1 = eval(data);,就是出现弹出undefined,这是什么原因呢?

二,但是在HTML定义的却毫无问题,代码如下:

      $(function () {
var person = {
"name": "Nicholas",
"age": ""
};
var obj = eval(person);
alert(obj.name);
})

三,经过百度发现:

原因在于:

1,eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
2,加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。

那上面这两句话怎么理解?

四,经过用调试,发现如图

1,在HTML页面定义的数据

2,经过异步返回的数据

由上面数据的对比得出结论:

1,在HTML页面写的定义的数据本身就是属于一个object对象

2,在异步之后的数据是语句(statement),而如果执行这个就会出现undefined错误,所以我们需要将括号内的强制转化为对象执行,就是以上这句话var obj1 = eval("(" + data + ")");

3,和这两句例子一样

alert(eval("{}")); // 放回undefined

alert(eval("({})")); //返回 object[Object]

最新文章

  1. ExtJS 中类的继承
  2. kafka模块概述
  3. 解决ADB server didn't ACK问题,连上手机问题
  4. C#的lock关键字
  5. json和字符串/数组/集合的互相转换の神操作总结
  6. Beautiful People 分类: Brush Mode 2014-10-01 14:33 100人阅读 评论(0) 收藏
  7. HDOJ2001计算两点间的距离
  8. HDU 2554 N对数的排列问题
  9. android 中文件加密 解密 算法实战
  10. uva 620 Cellular Structure
  11. Linux学习 -- 常用命令
  12. 【测试编码URI的函数】
  13. 拷贝本地文件到docker容器
  14. iview select filterable属性使用下拉小bug
  15. django- Vue.js 操作
  16. GitHub存储库泄露了API令牌和加密密钥
  17. 比Kafka Mangaer更优秀的开源监控工具-Kafka Eagle
  18. mysql大表设计以及优化
  19. Java集合实现类区别与联系
  20. 关于适用base64对图片进行编码在服务器上性能的相关讨论

热门文章

  1. JavaScript语言基础知识8
  2. SuspendLayout()了解方法
  3. 值为NULL的对象指针
  4. [Phonegap+Sencha Touch] 移动开发24 包wp8.1的App,弹出软键盘输入框聚焦实施后,无移动采收率方法来解决接口
  5. KMP算法简单回顾
  6. Printk 标志优先级别
  7. C#多线程--仓库问题引发的故事
  8. linux extract rar files
  9. delphi中设置系统时间方法
  10. Scrum与高效能人士