在前后端分离大行其道XXX(巴拉巴拉的废话不多讲了)。描述实际应用场景:后台组装数据,返回到前台调用。

刚开始没有注意“后台返回字符串_1”的形式,使用eval()处理。

只是返回了字符串,不是严格意义上的Json格式的字符串。

[{'priceType':'901e78cd-7c02-4c16-91c7-6b376e383e91','name':'张三','sex':'1','mobilephone':'18989898898','cardtype':'00','cardnum':'411234198810153710','email':'18913881546@163.com','tel':'18956114568','cusnum':'18956114568','validdate':'2019-01-04','birthday':'1988-10-15','fax':'025-85212125','address':'是是是','postcode':'','home':''},{'priceType':'fb89db8d-689a-4b3a-9f87-6296b40a89fa','name':'李四','sex':'1','mobilephone':'18989898898','cardtype':'00','cardnum':'411112198810153710','email':'18913881546@163.com','tel':'18956114568','cusnum':'18956114568','validdate':'2019-01-04','birthday':'1988-10-15','fax':'025-85212125','address':'是是是','postcode':'','home':''}]

后台返回字符串_1

在html页面中接受时,直接定义了一个var obj=eval(data.value);obj就是个对象数组,进行接下来的操作。

但是数据结构稍微复杂点后(如“后台返回字符串_2”),单纯的使用eval()则报错,“VM1004:1 Uncaught SyntaxError: Unexpected token :”

这时候用eval('('+data.value+')'); 可以取出对象。

{'adult':'1','child':'1','rows':[{'priceType':'901e78cd-7c02-4c16-91c7-6b376e383e91','name':'张三','sex':'1','mobilephone':'18989898898','cardtype':'00','cardnum':'411234198810153710','email':'18913881546@163.com','tel':'18956114568','cusnum':'18956114568','validdate':'2019-01-04','birthday':'1988-10-15','fax':'025-85212125','address':'是是是','postcode':'','home':''},{'priceType':'fb89db8d-689a-4b3a-9f87-6296b40a89fa','name':'李四','sex':'1','mobilephone':'18989898898','cardtype':'00','cardnum':'411112198810153710','email':'18913881546@163.com','tel':'18956114568','cusnum':'18956114568','validdate':'2019-01-04','birthday':'1988-10-15','fax':'025-85212125','address':'是是是','postcode':'','home':''}]}

后台返回字符串_2

$.parseJSON():则需要后台返回严格的json格式的字符串。推荐用http://www.bejson.com检查下。

{"adult":"1","child":"1","rows":[{"priceType":"901e78cd-7c02-4c16-91c7-6b376e383e91","name":"张三","sex":"1","mobilephone":"18989898898","cardtype":"00","cardnum":"411234198810153710","email":"18913881546@163.com","tel":"18956114568","cusnum":"18956114568","validdate":"2019-01-04","birthday":"1988-10-15","fax":"025-85212125","address":"是是是","postcode":"","home":""},{"priceType":"fb89db8d-689a-4b3a-9f87-6296b40a89fa","name":"李四","sex":"1","mobilephone":"18989898898","cardtype":"00","cardnum":"411112198810153710","email":"18913881546@163.com","tel":"18956114568","cusnum":"18956114568","validdate":"2019-01-04","birthday":"1988-10-15","fax":"025-85212125","address":"是是是","postcode":"","home":""}]}

后台返回字符串_3

前台调用$.parseJSON(data.value);得到所需要的数据。

总结:

1、不推挤使用eval();它执行其中的的 JavaScript 代码。不安全

2、$.parseJSON()对于返回数据要求更严格,且不会执行脚本;推荐使用。

附两个链接:

1、JavaScript eval() 函数

2、js中eval()和$.parseJSON()的区别和联系以及JSON.stringify()

eval()和$.parseJSON()注意事项的更多相关文章

  1. js中eval()和$.parseJSON()的区别

    之前自己一直对ajax不是特别的熟悉,所以一般都很少用这个去写功能,但是最近这个项目中用到了,用ajax异步传数据,json传数据这个时候就需要去解析传过来的数据了,eval()和$.parseJSO ...

  2. JSON.parse() JSON.stringify() eval() jQuery.parseJSON() 的区别

    http://www.jb51.net/article/81880.htm    :   jQuery.parseJSON(jsonString) : 将格式完好的JSON字符串转为与之对应的Java ...

  3. js中解析json时候的eval和$.parseJSON()的区别以及JSON.stringify()

    1.第一个区别是:安全性 json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢?      JSON.parse()之可以解 ...

  4. Json字符串和Json对象的简单总结

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). ...

  5. 【转】Jquery ajax方法解析返回的json数据

    转自http://blog.csdn.net/haiqiao_2010/article/details/12653555 最近在用jQuery的ajax方法传递接收json数据时发现一个问题,那就是返 ...

  6. jQuery来源学习笔记:扩展的实用功能

    // 扩展的实用功能 jQuery.extend({ // http://www.w3school.com.cn/jquery/core_noconflict.asp // 释放$的 jQuery 控 ...

  7. jQuery源码分析-03扩展工具函数jQuery.extend

    // 扩展工具函数 jQuery.extend({ // http://www.w3school.com.cn/jquery/core_noconflict.asp // 释放$的 jQuery 控制 ...

  8. js与jQuery方法对比

      javascript与jQuery方法对比jquery对象转dom对象 // 方式一(推荐使用) $("input")[0] // 方式二 $("input" ...

  9. 关于Jquery Ajax的用法

    今天简单描述一下Jquery Ajax的用法,和我在使用过程中的一些看法,仅供自己娱乐和大家参考值之用! Jquery Ajax的重要性不言而喻,只从Jquery面世之后,终于解救了像我这种既做前台又 ...

随机推荐

  1. Windows下安装配置MongoDB

    Windows下安装配置MongoDB 一,介绍 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB ...

  2. stm32矩阵键盘扫描数据通过USB发送

                   Keyboard.c #include "keyboard.h"#include "my_usb.h"#include " ...

  3. kafka依赖zookeeper原因解析及应用场景

    kafka简介: kafka是一个发布订阅消息系统,由topic区分消息种类,每个topic中可以有多个partition,每个kafka集群有一个多个broker服务器组成,producer可以发布 ...

  4. 高斯消元part2

    今天整一整高斯消元的模板,正经的 高斯消元主要用于解n元一次线性方程组与判断是否有解 主要思想? 就是高斯消元啊 主要思想是理想状态下消为每行除最后一项外只有一个1,并且每行位置互异,具体看下面. 这 ...

  5. 洛谷P3469[POI2008]BLO-Blockade

    题目 割点模板题. 可以将图中的所有点分成两部分,一部分是去掉之后不影响图的连通性的点,一部分是去掉之后影响连通性的点,称其为割点. 然后分两种情况讨论,如果该点不是割点,则最终结果直接加上2*(n- ...

  6. ELK日志系统:Elasticsearch+Logstash+Kibana+Filebeat搭建教程

    ELK日志系统:Elasticsearch + Logstash + Kibana 搭建教程 系统架构 安装配置JDK环境 JDK安装(不能安装JRE) JDK下载地址:http://www.orac ...

  7. api跨域

    1.找方法名称是get开头的2.找get请求类型的 自定义webapi的路由规则,控制到action 1.跨域设置:(服务端)webconfig文件中,system.webServer节点下添加 &l ...

  8. uploadify多文件上传实例--C#

    下载uploadify文件 http://www.uploadify.com/ HTML(视图) <html lang="zh-cn"> <head> &l ...

  9. 通用的C#导出Excel 支持2003及2007以上版本

    将数据导出到Excel,供用户下载是经常要使用到的一个功能,我这里进行了一些封装,目前已满足项目中导出的需求,使用DataReader导出Excel,支持自定义多表头,使用委托处理字段格式化及字段值的 ...

  10. js重点--匿名函数

    推荐博客:https://www.cnblogs.com/pssp/p/5216668.html 函数是必须要有函数名的,不然没有办法找到它,使用它. 如果没有名字必须要有一个依附体,如:将这个匿名函 ...