平时在使用到ajax的时候一般都使用jquery直接使用回调函数,还没发生过什么问题,但是,今天有一个页面直接使用eval来解析执行json对象,居然出现了错误。
一下是执行有错误的代码:
var str = "{'arr':123}";
alert(str);
alert("1111");
var obj = eval("{'arr':123}");
alert("2222");
alert(obj);
后来谷歌了一盘,他们说:要加一个圆口号。这下就对了:
var str = "{'arr':123}";
alert(str);
alert("1111");
var obj = eval("({'arr':123})");
alert("2222");
alert(obj);
百思不的其解(看来js功底不咋地),找了好久,很多论坛和社区都是只有问题和回答,就是不说为什么。终于在一个地方看到有人这样说了:
引用
加一对括号让{...}先强制运算为object
没有括号,eval会认为{}是语句块,因为javascript是语句优先,因此eval后得到的是
"loc_320412":"1","loc_320481":"1",....
这在alert中显然是错误的
总结: 两个花括号之间有两种意义:语句块和JS对象。语句块优先,如果对花括号加上圆括号就只有js对象的含义了。同理,如果json返回的是数组就可以不用加圆括号
分享到:
相关推荐
本篇将聚焦于如何巧妙地使用`eval`函数来解析JSON对象,虽然在实际开发中,由于安全考虑我们通常会避免使用`eval`,但理解其工作原理对于学习JavaScript和JSON解析至关重要。 首先,JSON对象本质上是符合JSON语法的...
### JavaScript中eval解析JSON字符串详解 #### 一、前言 在JavaScript开发中,解析JSON字符串是一项常见的任务。其中一种方法是使用`eval()`函数。虽然这种方法并不推荐,但了解其工作原理及其潜在风险仍然非常...
在描述中提到,使用`eval()`生成JSON对象时,需要注意添加一对圆括号。这是因为JSON数据通常是以对象或数组的形式表示的,而JavaScript中的`eval()`在处理非完整语句时可能会出现问题。例如,如果JSON字符串是`{...
因此,现代JavaScript开发通常避免使用`eval()`来解析JSON,而是采用`JSON.parse()`函数,它是专门为解析JSON设计的,既安全又高效: ```javascript var data = '{"key": "value"}'; var json = JSON.parse(data); ...
需要注意的是,虽然`eval()`函数可以用来解析JSON字符串,但它并不被推荐作为解析JSON的标准方法,原因在于它会执行任何传入的字符串中的JavaScript代码,这可能会带来安全风险。例如,如果`data1`来源于不可信的...
例如,如果一个JSON对象没有被包含在圆括号内直接传递给eval,可能会出现语法错误。这是因为eval期望的是一个JavaScript语句或表达式,而一个JSON对象字面量本身并不是一个有效的JavaScript语句。 在文章中提到的...
虽然eval的使用带来了灵活性,但也伴随着风险和注意事项,特别是在解析JSON格式的数据时。 首先,需要理解JSON是一种轻量级的数据交换格式,它的语法简单明了,易于人阅读和编写,同时也易于机器解析和生成。JSON与...
使用eval函数来解析,并且使用jquery的each方法来遍历 用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用...
1. **通过`eval()`函数解析JSON字符串**: 当服务器返回JSON字符串,而jQuery异步请求没有指定数据类型或以字符串形式接收时,我们可以使用`eval()`函数将其转换为JavaScript对象。但请注意,`eval()`是危险的,...
在早期的JavaScript开发中,有时会使用`eval()`函数来解析JSON,但这种方法存在安全风险,因为它会执行任何有效的JavaScript代码。因此,现在不推荐使用`eval()`,而是应该使用`JSON.parse()`。 #### JSON.parse() ...
在JavaScript和jQuery中,解析JSON数据是常见的任务,特别是在与服务器进行异步通信时。JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人和机器都能容易地读取和写入数据。当jQuery从服务器...
在JavaScript中,解析JSON数据通常涉及两种主要方法:使用`eval()`函数和使用`JSON.parse()`(在现代浏览器中)。本文主要关注使用`eval()`解析JSON的注意事项,尤其是在结合jQuery进行异步请求的情况下。 首先,让...
一个在js中解析json字符串为json对象的库, 在js中 使用 var json = json_parse('json...json就是解析后的json对象,比较方便的避免eval函数。如果不想引入其他过多的js库,那么使用这个库解析json字符串还是蛮方便的
另一种方法是在VBScript中嵌入JScript代码,通过JScript的`eval`函数解析JSON字符串。由于VBScript不支持`eval`,我们需要在JScript中定义一个`parseJSON`函数,然后在VBScript中调用它。 1. **定义JScript函数**:...
然而,在一些老版本或者不支持JSON的环境中,开发者可能需要使用`eval()`函数来解析JSON。 `eval()`函数的作用是执行一个字符串作为JavaScript代码。当将JSON字符串传递给`eval()`时,需要在字符串外部添加一对小...
如果没有圆括号,`eval`可能会误将JSON数据解析为语句而不是对象。例如,`{}`会被误认为是一条空语句而不是一个空对象。 ```javascript alert(eval("{}")); // undefined alert(eval("({})")); // [object Object] ...
### 使用eval生成JSON对象 #### 一、引言 在JavaScript开发中,有时需要将JSON字符串转换为可操作的对象。常见的做法之一就是使用`eval()`函数。然而,这种方法虽然便捷,但也存在一定的风险与限制。本文将详细...