在前后端分离大行其道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. css 3 新特性

    CSS3的新特性大致分为以下六类 1.CSS3选择器 2.CSS3边框与圆角 3.CSS3背景与渐变 4.CSS3过渡 5.CSS3变换 6.CSS3动画 下面分别说一说以上六类都有哪些内容 CSS3 ...

  2. Linux下find命令用法详解

    Linux下find命令用法详解   学神VIP烟火 学神IT教育:XueGod-IT   最负责任的线上直播教育平台   本文作者为VIP学员 烟火   第一部分:根据文件名查找   1.在当前目录 ...

  3. celery概述

    celery介绍 Celery是一个功能完备即插即用的任务队列.它使得我们不需要考虑复杂的问题,使用非常简单.celery看起来似乎很庞大,本章节我们先对其进行简单的了解,然后再去学习其他一些高级特性 ...

  4. Re.多项式除法/取模

    前言 emmm又是暂无 前置 多项式求逆 多项式除法/取模目的 还是跟之前一样顾名思义] 给定一个多项式F(x),请求出多项式Q(x)和R(x),满足F(x)=Q(x)∗G(x)+R(x),R项数小于 ...

  5. 洛谷 P1903 [国家集训队]数颜色 / 维护队列

    墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. \(Q\) \(L\) \(R\) 代表询问你从第L支画笔到第R支画笔中共有几种不同 ...

  6. 洛谷P4630 铁人两项--圆方树

    一道很好的圆方树入门题 感谢PinkRabbit巨佬的博客,讲的太好啦 首先是构建圆方树的代码,也比较好想好记 void tarjan(int u) { dfn[u] = low[u] = ++dfn ...

  7. mysq建表参数设置

    建表的完整性约束: not null 与 default unique primary auto_increment foreign key 外键的变种  三种关系 一.介绍 约束条件与数据类型的宽度 ...

  8. codeforces-1136 (div2)

    A.读到第i章,就有N - i + 1章还没读. #include <map> #include <set> #include <ctime> #include & ...

  9. [图解Java]Condition

    图解Condition 0. demo 我先给出一个demo, 这样大家就可以根据我给的这段代码, 边调试边看源码了. 还是那句话: 注意"My" , 我把ReentrantLoc ...

  10. 轻量Pythonweb - flask+jinja2

    后台代码 MVC from flask import Flask,request,render_template app = Flask(__name__) @app.route('/',method ...