这两个功能在幕后做同样的事情吗?(在单一陈述函数中)
var evaluate = function(string) {
return eval('(' + string + ')');
}
var func = function(string) {
return (new Function( 'return (' + string + ')' )());
}
console.log(evaluate('2 + 1'));
console.log(func('2 + 1'));
Run Code Online (Sandbox Code Playgroud) ajax请求返回一个标有我用户输入的JSON数组.输入已经过清理,使用eval()函数,我可以轻松创建我的javascript对象并更新我的页面...
所以这就是问题所在.无论我如何努力消毒输入,我宁愿不使用eval()函数.我已经检查了谷歌如何使用"没有评估的AJAX中的JSON",并且已经运行了很多不同的方法......
我应该使用哪一个?是否有标准的,经过验证的安全方法?
此链接向您显示jQuery (new Function("return " + data))();用于旧版浏览器,以解析JSON字符串而不是eval().
这有什么好处?如果JSON字符串不安全怎么办?
我正在使用json与json.我的客户端页面生成json,我存储在我的服务器上.然后,客户端可以稍后将json取回,解析并显示它.
由于我的客户正在生成json,它可能不安全.我认为jquery在内部使用eval().真的吗?有没有办法在可用的浏览器中使用本机json解析器,否则回退到手动解析?我是jquery的新手,所以我不知道在哪里插入自己的解析代码.我做的事情如下:
$.ajax({
url: 'myservlet',
type: 'GET',
dataType: 'json',
timeout: 1000,
error: function(){
alert('Error loading JSON');
},
success: function(json){
alert("It worked!: " + json.name + ", " + json.grade);
}
});
Run Code Online (Sandbox Code Playgroud)
所以在success()方法中,json对象已经为我解析了.有没有办法先将它作为原始字符串捕获?然后我可以决定是使用本机解析器还是手动解析(希望有一个jquery插件).
我正在阅读的文章都来自不同的年份,所以我不知道jquery是否已经为json放弃了eval(),
谢谢
假设我有一个AJAX函数:
function callpage{
$.ajax({
method:"get",
url:"/abc/",
data:"x="+3
beforeSend:function() {},
success:function(html){
IF HTTPRESPONSE = "1" , ALERT SUCCESS!
}
});
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
当我的"View"在Django中执行时,我想返回HttpResponse('1')或'0'.
我怎么知道它是否成功,然后发出警报?
{"some_id":
[
{"city":"Bellevue"},
{"state":"Washington"}
]
}
Run Code Online (Sandbox Code Playgroud) javascript ×4
jquery ×3
eval ×2
json ×2
ajax ×1
django ×1
function ×1
optimization ×1
python ×1