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

       $(function () {$.ajax({url: "Demo.aspx",type: "post",data: { Id: "1" },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": "29"};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]

转载于:https://www.cnblogs.com/May-day/p/6124848.html

js的eval函数解析后台返回的json数据时为什加上圆括号eval((+data+)),而HTML页面定义的数据不用...相关推荐

  1. javascript eval函数解析json数据时为什加上圆括号eval((+data+))

    原因很简单:因为在js中{}表示一个语句块(代码段),所有加上"()"表示表达式 转载于:https://www.cnblogs.com/lihongchen/p/4270334. ...

  2. android中解析后台返回的json字符串

    普通形式的: 服务器端返回的json数据格式如下: {"userbean":{"Uid":"100196","Showname&q ...

  3. c++ _int64转字符串_C语言 仿JS的eval函数 解析字符串

    C语言 利用后缀表达式解析字符串(符合c98标准,很容易移植到计算器上) 最近用98标准的C语言写了个解析字符串,类似于JavaScript中的eval函数,感觉挺实用(移植到了计算器上,可以画F(X ...

  4. JS前端取得并解析后台服务器返回的JSON数据的方法

    摘要:主要介绍:使用eval函数解析JSON数据:$.getJSON()方法获得服务器返回的JSON数据 JavaScript eval() 函数 eval(string) 函数可计算某个字符串,并执 ...

  5. swift:使用NSJSONSerialization和SwiftyJSON两种方法解析网络返回的json格式数据

    在我的博客(下面)两个实验的基础上,使用NSJSONSerialization和SwiftyJSON两种方法解析网络返回的json格式数据,参照视频实现的"天气信息"小实验 1 创 ...

  6. 微信小程序后台返回的JSON字符串转JSON报错问题解决方案

    最近在学习小程序时候,发现后台返回的JSON数据字符串转JSON出错,如下: 转换语句:if (JSON.parse(uploadFileRes.data).code == 401) {//开始出错 ...

  7. 解析ajax返回的json数据

    问题描述 最近在开发一个音乐小网站的时候,因为返回的数据是多重数组对象(即数组里面嵌套数组),所以不知道如何解析api返回的json数据.返回的json数据格式如下: json总体结构如下: json ...

  8. R:parse函数和eval函数解析字符串为命令并运行

    文章目录 例子1 例子2 例子3:回归函数lm中 例子4:绘图函数ggplot中 parse函数解析字符串为表达式:eval函数执行表达式输出结果:parse函数和eval函数在自定义函数中常常非常有 ...

  9. pdf.js的使用(C#后台返回pdf文件流)

    最近需要用到一个pdf展示的功能,本来是打算用浏览器自带的预览,直接用window.open打开,但是由于在磁盘上的pdf文件都是随机字符串命名,一些标题和下载名称会不对,所以引用了这个pdfjs插件 ...

最新文章

  1. mongodb权限管理
  2. 前端工程师要懂些什么
  3. USB Kill v2.0,一个可以瞬间烧毁电脑或平板的“U盘”
  4. matlab找数据的转账点,nodejs开发EOS转账服务的两种方案
  5. VTK:绘图之ScatterPlot
  6. JavaScript从入门到精通之入门篇(二)函数和数组
  7. weka中算法说明[转]
  8. java 中append()_调用append()方法在Java中构造一个StringBuffer对象
  9. linq 根据指定条件返回集合中不重复的元素
  10. PHP 根据 搜索条件/勾选数据 分批次 处理数据
  11. 毕业设计| 语音识别智能家居制作
  12. 联想服务器TS540装系统蓝屏,联想装win7蓝屏0x000000a5超详细图文解决方案
  13. linux下安装字体
  14. PyQt: 拖放事件(Drag Drop)
  15. Mysql常用技巧总结
  16. html页面设计扁平化,50个漂亮的扁平化网页设计欣赏
  17. 13/18V系列中频切换开关原理及应用方式
  18. realize与recognize辨析
  19. 50.新拟物卡片悬停特效
  20. 计算机芯片英文翻译,芯片的英文翻译,芯片英语怎么说

热门文章

  1. Java Build Tools: Ant vs Maven vs Gradle
  2. 2013年下半年系统集成项目管理工程师考试试卷(回忆版)
  3. [原创]VS2008 英文版转为中文版之小记
  4. c语言编程游戏界面,震惊!!!一个关于c语言图形化界面编程的小游戏-Go语言中文社区...
  5. 南京晓庄学院计算机网络试卷,南京晓庄学院计算机网络8套卷(完整含答案).doc...
  6. hive 列转行_掌握这个SQL技巧超越80%的人——行转列/列转行
  7. linux selenium_爬虫界又出神器|一款比selenium更高效的利器
  8. 前端如何获取后台通过map封装的值_如何舒服的写api接口?
  9. 巩固好基础,才能学好Linux
  10. 使用zerotier让异地设备组局域网