2014-02-05 4 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};});" 
Смежные вопросы