JavaScript的eval()方法的使用
在做AJAX应用开发的时候,我们通常喜欢把服务器端返回的JSON格式字符串在客户端的回调函数中把它作为JavaScript代码执行并用一个变量保存起来,以方便使用返回的数据。
通常的做法就是var jsonData = eval(xmlHttp.responseText)。这看起来似乎一切都是正确的,但当你运行代码的时候,你会发现报“invalid labe”错误了。
例如:
第一次使用eval(),将后台写的json格式字符串处理成json对象数组
var jsonstr = “{name:’test’,age:18}”;
var jsonobj = eval(jsonstr);
错误提示:
SyntaxError: invalid label
写到这里老是报错,看着觉得都对,怎么会拿不到对象呢?
为什么会这样?
原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
alert(eval(“{}”); // return undefined
alert(eval(“({})”);// return object[Object]
如何解决?
var josnobj = eval(“(“+jsonstr+”)”);
或者这样
eval(“var jsonobj = ” + jsonstr);
JavaScript的eval()方法的使用相关推荐
- JavaScript中eval方法的替代方法
公司开设新的考核标准,着重对代码质量进行考核,用到的代码实时检测工具是sonaLint.用SonarLint进行代码检测的时候,会 出现对显示审查结果严重提示 Review the arguments ...
- Android中WebView加载本地Html,与JavaScript与Android方法相互传值(续)...
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/51809558 接着上篇Android中Web ...
- JavaScript之eval() 函数
为什么80%的码农都做不了架构师?>>> 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数描述 ...
- java script eval_「eval」js中的eval方法详解(一)–eval方法的初级应用 - seo实验室...
eval 在我看来,js中的eval()方法就是一个js语言的执行器,它能把其中的参数按照javaScript语法进行解析并执行. 语法: eval(s); eval()方法中的参数s有多种情况.参数 ...
- JavaScript中eval()和$.parseJSON()的区别和联系以及JSON.stringify()的区别
JavaScript中eval()和$.parseJSON()的区别和联系以及JSON.stringify()的区别 一.第一个区别是:安全性 json格式非常受欢迎,而解析json的方式通常用JSO ...
- java 调用js脚本_Java中使用JavaScript脚本的方法步骤
简介 Nashorn Nashorn 一个 javascript 引擎. 从JDK 1.8开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java的嵌入式JavaScript引 ...
- JS的eval()方法
定义和用法 eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行. 如果参数是一个表达式,eval() 函数将执行表达式.如果参数是Javascript语句,eval()将执 ...
- js中的Eval方法
eval 方法 检查 JScript 代码并执行. eval(codeString) 必选项 codestring 参数是包含有效 JScript 代码的字符串值.这个字符串将由 JScript 分析 ...
- 这是如何更好地利用JavaScript数组的方法
by pacdiv 由pacdiv 这是如何更好地利用JavaScript数组的方法 (Here's how you can make better use of JavaScript arrays) ...
最新文章
- centos 禁用root登录
- (0001) iOS 开发之收集第三方资源篇
- 如何使用firebug
- Android属性动画 PropertyValuesHolder
- 4.3.2 用jQuery进行异步加载(2)
- C++对类或结构体进行指定规则排序
- 拜托!不要用“ ! = null “ 做判空了
- 聚类算法(K-Means和DBSCAN)
- Java基础-Java语言简介
- WPF界面设计的模式
- Spring核心模块及功能汇总
- 【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第六节 窗体对象的锚定
- 【算法讲19:同余最短路】跳楼机 | 墨墨的等式 | Lazy Running
- 自定义View中Canvas之Path的详解
- 毕业有救了?!留美学生创造出了自动写论文的机器人!
- codeforces 417D Cunning Gena
- Ubuntu登录界面键盘鼠标失灵
- 记录docker failed to initialize docker desktop is shutting down解决办法
- SA8155P QCOM 车载系统介绍
- 整数分解 费马方法c语言,因数分解(费马的方法)
热门文章
- 20230103编译ToyBrick的TB-RK3588X的Andorid12的LOG04
- 作文成功之路杂志作文成功之路杂志社作文成功之路编辑部2023年第3期目录
- html中如何文字换行,如何使用HTML / CSS将文字换行
- matlab武汉理工大学数值分析线性函数拟合实验_11数值分析第七章数值微积分龙贝格积分大学数学云课堂...
- Python3.6+selenium2.53.6自动化测试_禅道对登录页面动作进行封装并进行测试(一)(本地禅道)
- 防水试验箱市场深度研究分析报告
- 史上最全 Python 数据分析学习路线
- JFFS2的remount过程
- Camtasia 2019 注册信息配置
- Ubuntu 18.04 查看显示器信息