2014-02-05 51 views
0

我有下面的代码段(伪代码):代表JavaScript代码作为字符串

$(function() { 
    var a = 'Hello world'; 
    var api = Function; 
    api.start = function(e) { 
     e.preventDefault(); 
    }; 
}); 

我想将其发送回给用户通过JSON对象(例如code属性),然后用执行它eval

我怎样才能逃脱那段代码以后用eval函数?

+0

这不是代码已经是一个字符串? –

+8

这通常是一个非常糟糕的主意。 – SLaks

+0

你为什么想这样做? – Cerbrus

回答

0

你将不得不真正信任回来的代码,允许这样的:

var myObj = { 
    trustMe: "(function() { var a = 'Hello world'; alert(a);}());" 
}; 

eval(myObj.trustMe); 

相反,如果你传递回你的数据,你可以把所有从物体分离的代码...

var myObj = { 
    justData: "Hello world;" 
}; 

alert(myObj.justData); 

我已经使用了一个JavaScript对象,但是如果您发送回JSON,您的想法是相同的,您只需将该字符串作为属性值。

0

首先,我假设你有这样做的正当理由。其次,假设你想使用Java;你可以拨打StringEscapeUtils.escapeJson(String);一旦逃脱你的代码应该看起来像

"$(function() {\n\tvar a = 'Hello world';\n" 
    + "\tvar api = Function;\n\tapi.start = function(e) {\n" 
    + "\t\te.preventDefault();\n\t};});"