Alternativas ao eval() em JavaScript

  • Autor Autor Delzon
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
D

Delzon

Beta
Redactor
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Hola a todo 😀
Dicen que el uso de eval es malo :/...
Bueno quisiera saber entonces si se puede reemplazar de alguna forma.

Lo que quiero es a travez de ajax obtener una porcion de codigo javascript y ejecutarla en el navegador.

en otras palabras la peticion devuelve un STRING:
alert("Hola");

La unica forma que lo eh logrado hacer es:
eval(response) que vendria a ser esto: eval(alert("hola"))

Existe otra manera que no se usando eval() ?
:star2:
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Dependiendo qué sea lo que ocupas sacar y/o de dónde, quizas se pudiera hacer de otra forma 😉
 
Claro! 🙂

Símplemente, usa una etiqueta script en vez de solicitarlo via ajax:

Inserir CODE, HTML ou PHP:
(function() {
var s = document.createElement('script'),
   fjs = document.getElementsByTagName('script')[0];
s.src = "URL";
s.async = true;
fjs.parentNode.insertBefore(s, fjs);
}());

O mejor aún: Usa JSON desde el server y realiza la respuesta desde el script principal:

Desde el servidor:

PHP:
// Básicamente mandas todos los datos que necesites:
echo json_encode(array(
    'frases' => array('Hola Mundo!','Esto se convertirá a JSON', 'Cualquier otra cosa')
));

// Esto se convertirá en un objeto JSON:
// {"frases": ["Hola mundo!", "Ésto se convertirá a JSON", "Cualquier otra cosa"]}
Éste sería el callback js donde recibirías la respuesta, es decir: el onload de tu XMLHttpRequest o el success de jQuery.

Si usas jQuery puedes evitar parsear el JSON

Inserir CODE, HTML ou PHP:
function callBack(data) {
    var data = (window.JSON && window.JSON.parse) ? window.JSON.parse(data) : (new Function("return " + data)())
        // Trabajar con los elementos que nos ha devuelto el servidor
        , frases= data.frases
        , len = frases.length
        , i = 0;
    for(; i < len; i++) {
        alert(frases[i]);
    }
}
 
Voltar
Topo