标签: eval

为什么在解析json字符串时,eval('('+ jsonString +')')的开放引号和括号

你能告诉我这种特定语法结构的原因吗?

 eval('(' + jsonString+ ')')
Run Code Online (Sandbox Code Playgroud)

解析json文本时.克罗克福德说:" 文本必须用parens包装,以避免绊倒JavaScript语法中的歧义." 在这里.那是什么意思?

我们能避免吗?

javascript json eval

21
推荐指数
1
解决办法
3229
查看次数

if语句中的eval?

 <% if(Eval("SaveDate") != DBNull.Value){ %>
     do magic                           
 <%} %>
Run Code Online (Sandbox Code Playgroud)

给我错误:数据绑定方法,如Eval(),XPath()和Bind()只能在数据绑定控件的上下文中使用.

我可以写:<%#Eval("SaveDate")!= DBNull.Value?做魔法但我需要在if语句中做很多html魔术.

我知道我应该添加#以便使用Eval,但不确定正确的语法.

c# asp.net eval

21
推荐指数
2
解决办法
3万
查看次数

Ruby:创建一个沙盒评估?

我的Rails应用程序有关于何时应在页面上显示一些内容的复杂规则.我决定通过在Ruby中编写谓词(简单的"是/否"函数)并将它们存储在数据库中以便随后进行评估来实现这一点.这很简单.

我主要担心的是安全性:如果恶意某人弄清楚如何写入数据库,他们可能会在数据库中粘贴任意Ruby代码,然后" 所有基础都属于我们 ".

那么是否可以创建一个"沙盒"eval,例如,删除了所有IO操作?

ruby eval ruby-on-rails sandbox

21
推荐指数
3
解决办法
7772
查看次数

在JavaScript中指定eval()的范围?

有什么办法可以在特定范围内执行eval()(但不是全局)

例如,以下代码不起作用(在第二个语句中未定义)因为它们位于不同的范围内:

eval(var a = 1); 
eval(alert(a));
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想动态创建一个范围.例如(语法肯定是错误的,但只是为了说明这个想法)

var scope1;
var scope2;
with scope1{
    eval(var a = 1); eval(alert(a));  // this will alert 1
}
with scope2{
    eval(var a = 1); eval(a++); eval(alert(a));  // this will alert 2
}
with scope1{
    eval(a += 2); eval(alert(a)); // this will alert 3 because a is already defined in scope1
}
Run Code Online (Sandbox Code Playgroud)

有关如何实现这样的事情的任何想法?谢谢!

javascript scope eval

21
推荐指数
5
解决办法
2万
查看次数

eval是邪恶的,但它有缺陷吗?

如果我运行这个:

eval('{ear: {"<=": 6}}');
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

未捕获的SyntaxError:意外的令牌:

让我们手动创建对象:

var foo = {};
foo.ear = {};
foo.ear["<="] = 6;
Run Code Online (Sandbox Code Playgroud)

现在,以下代码:

JSON.stringify(foo)
Run Code Online (Sandbox Code Playgroud)

返回以下字符串:

'{ "耳朵":{ "<=":6}}'

与我开始使用的字符串相同(除了白色字符,但这些字符不相关),因此eval(JSON.stringify(foo))返回相同的语法错误错误消息.然而:

$.parseJSON(JSON.stringify(foo))
Run Code Online (Sandbox Code Playgroud)

正确执行.这是什么原因?

编辑:

正如nnnnnn和Ron Dadon指出的那样,初始字符串和结果stringify是不同的.但是,正如我在问题中指出的那样,即使stringify用作输入的eval结果也会导致语法错误消息.

EDIT2:

根据所进行的答案和实验,这个功能很有趣:

function evalJSON(text) {
    return eval("(" + text + ")");
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery json eval

21
推荐指数
3
解决办法
950
查看次数

Eval是邪恶的...那么我应该使用什么呢?

ajax请求返回一个标有我用户输入的JSON数组.输入已经过清理,使用eval()函数,我可以轻松创建我的javascript对象并更新我的页面...

所以这就是问题所在.无论我如何努力消毒输入,我宁愿不使用eval()函数.我已经检查了谷歌如何使用"没有评估的AJAX中的JSON",并且已经运行了很多不同的方法......

我应该使用哪一个?是否有标准的,经过验证的安全方法?

javascript ajax eval

20
推荐指数
3
解决办法
2万
查看次数

什么是更好的做法:eval或追加脚本?

我需要执行一些我从一些AJAX调用中获得的自定义JavaScript.我可以做一个eval字符串,或者我可以将它添加script到DOM 中的-tag中.哪种方法会更好?

var dynamicScript = 'alert(\'Hello world!\');';
Run Code Online (Sandbox Code Playgroud)

方法1 - 脚本:

var x = '<script type="text/javascript">' + dynamicScript  +'</scr' + 'ipt>';
$(document.body).append(x);
Run Code Online (Sandbox Code Playgroud)

方法2 - 评估:

eval(dynamicScript);
Run Code Online (Sandbox Code Playgroud)

什么方法更好,为什么?还是有更好的选择?

javascript jquery dom eval

20
推荐指数
1
解决办法
1万
查看次数

python中的eval函数范围

请考虑以下示例:

i=7
j=8
k=10
def test():
    i=1
    j=2
    k=3
    return dict((name,eval(name)) for name in ['i','j','k'])
Run Code Online (Sandbox Code Playgroud)

它返回:

>>> test()
{'i': 7, 'k': 10, 'j': 8}
Run Code Online (Sandbox Code Playgroud)

为什么eval不考虑函数内定义的变量?从文档中,您可以选择传递全局变量和本地字典.这意味着什么?最后,我如何修改这个小案例才能使它工作?

python eval python-internals

20
推荐指数
1
解决办法
890
查看次数

C#Eval()支持

我们需要在运行时评估对象中的值,同时我们有一个确切成员路径的文本语句,例如:myobject.firstMember.secondMember [3] .text
我们考虑使用正则表达式解析这个文本语句,然后评估文本通过使用反射,但在我们这样做之前,我想知道C#是否支持某种评估能力?所以我们不必自己解析.微软如何在他们的直接窗口或观看窗口中执行此操作?

非常感谢你,

阿迪巴尔达

c# eval

19
推荐指数
3
解决办法
6万
查看次数

eval导入模块

我无法使用该eval()功能导入模块.

所以,我有一个功能,如果我这样做的import vfs_tests as v话.然而,使用相同的导入eval()eval('import vfs_tests as v')抛出一个语法错误.

为什么会这样?

python eval

19
推荐指数
3
解决办法
2万
查看次数

标签 统计

eval ×10

javascript ×5

c# ×2

jquery ×2

json ×2

python ×2

ajax ×1

asp.net ×1

dom ×1

python-internals ×1

ruby ×1

ruby-on-rails ×1

sandbox ×1

scope ×1