如果data是字符串,使用eval("("+data+")")可以将其转换为json对象,和JSON.parse的功能一样。

如果data是json对象,使用eval("("+data+")")会报错,正如你描述的错误。eval一个json对象,没有什么作用,这个时候不需要使用eval方法,直接用data即可。

所以,如果你那边能确定后台返回的是字符串,就使用eval("("+data+")")(eval会带来很多问题,不建议使用,如果想实现转化用JSON.parse更好),如果后台返回的是json对象,什么操作都不需要,直接使用data即可。如果你是用的jquery, 将type(一般为这个配置属性)设为json,或者利用$.getJSON()方法获得服务器返回,那么就不需要eval()方法了,因为这时候得到的结果已经是json对象了,只需直接调用该对象即可

另外多说一点:
为什么eval要添加括号呢?

原因:eval本身的问题。 由于json是以{}的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。

console.log(eval("{}"); // undefined

console.log(eval("({})");// object[Object]

【java奇思妙想】eval(data)和eval(“(“+data+“)“)的区别相关推荐

  1. MongoDB和Java(4):Spring Data整合MongoDB(XML配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  2. nslang oracle_解决ojdbc14连接oracle报“java.sql.SQLException: Io 异常: Size Data Unit (SDU) mismatch”异常问题...

    一.前言 通过ojdbc14.jar连接oracle数据库,应用运行期间报出"java.sql.SQLException: Io 异常: Size Data Unit (SDU) misma ...

  3. MongoDB和Java(5):Spring Data整合MongoDB(注解配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  4. Caused by java.lang.Exception Failed to send data to Kafka Expiring

    flink 写kafka,报错,作业挂掉 Caused by: java.lang.Exception: Failed to send data to Kafka: Expiring 89 recor ...

  5. Java接收solr动态域_Spring Data Solr创建动态域报错:org.springframework.data.solr.UncategorizedSolrException...

    今天在项目中使用Spring Data Solr导入动态域数据报错, 控制台打印错误信息如下 Exception in thread "main" org.springframew ...

  6. java加载自定义字体java.io.IOException: Problem reading font data.

    异常信息 load font error:{} java.io.IOException: Problem reading font data.at java.awt.Font.createFont0( ...

  7. eval函数python_Python eval()函数

    eval函数python Python eval() function is used to parse an expression string as python expression and t ...

  8. 一些数据格式化-Eval( )和DataBinder.Eval(Container.DataItem, )的区别及用法

      ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fieldn ...

  9. 【Elasticsearch】Data too large, data for which is larger than the limit of

    1.概述 参考:elasticsearch报Data too large异常处理 在线上ES集群日志中发现了如下异常,elasticsearch版本为7.3.2 [2021-03-16T21:05:1 ...

  10. spring data jpa 与 jpa的区别

    spring data jpa 与 jpa的区别 - sinat_39789638的博客 - CSDN博客 https://blog.csdn.net/sinat_39789638/article/d ...

最新文章

  1. 双目视觉测距原理,数学推导及三维重建资源
  2. mysql单机多实例启动不了_mysql单机启用多实例的配置方法
  3. 使用links方式安装eclipse插件
  4. 【Qt】Qt中JSON简介
  5. 2020 最烂密码 TOP 200 大曝光,一不小心就中枪了
  6. 从入门到放弃之大数据Hive
  7. visual studio运行时库MT、MTd、MD、MDd 的区别
  8. Javascript——Math对象
  9. 如何对大数据进行分析
  10. Node.js:模块化思想中一个Javascript文件分析以及exports 和 module.exports的区别
  11. 合并多个 SQL 文件,并用 Navicat 执行
  12. 单片机外设篇——SPI协议
  13. 南京财经大学计算机考研资料汇总
  14. 史上最全进入BIOS方法及U盘重装系统步骤详解
  15. 机器学习:CS 229 - Machine Learning - Supervised Learning cheatsheet
  16. Linux笔记之Debian 11(bullseye) 配置国内源
  17. Bitvise SSH Client下载
  18. JavaScript - 日期型字符串增加天数(日期增加指定天数计算)
  19. The vulnerabilities were addressed in OpenSSL 1.02f/1.01r. cocos2d 2.2.6
  20. 基于php微信小程序购物商城 校园二手商品 图书鲜花商城 毕业设计(3)微信用户登录

热门文章

  1. Linux里隐藏的计算器,你知道它的奥秘吗?
  2. FreeRTOS之Tracealyzer for FreeRTOS(FreeRTOS+Trace) 详解(源码解析+移植)
  3. PHP设计渐变的效果,canvas渐变色:canvas如何实现渐变色的效果?
  4. php提前输出响应及注意问题
  5. MySQL优化之——触发器
  6. 【Computer Organization笔记29】大作业展示
  7. PHP与Spring的强势接口设计_微课介绍
  8. POJO中使用ThreadLocal实现Java嵌套事务
  9. bzoj1057,poj3250
  10. android刷新蓝牙缓存,如何使用GattServer以编程方式清除蓝牙缓存