2011-04-26 3 views
0

ce code produit une erreur de syntaxe .. mais je ne peux pas comprendre ce qui ne va pas?eval() - erreur de syntaxe

alert(eval('('+this.responseText+')')); 

EDIT:

 var _this = this; 
     this.resource.open('POST', uri, true); 
     this.resource.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
     this.resource.onreadystatechange = function(){ 
      if(this.readyState == 4){ 
       _this.clear_timeout(); 

       if(_this.loader){ 
        Loader.dstr(); 
       } 

       if(_this.rtn_func){ 
        _this.rtn_func(eval('('+this.responseText+')'), _this.rtn_obj, _this.rtn_scope); 
       } 
      } 
     }; 
     this.resource.send(get_str); 
+0

probablement, le texte de votre réponse n'est pas javascript valide ... – Vishwanath

+2

Quelle est la valeur de responseText? –

+0

oui bien sûr! : D faire une réponse – clarkk

Répondre

1

Vous devez vérifier si oui ou non responseText est effectivement valide Javascript. Est-ce que vous voulez que vous ne l'avez pas juste affichage la chaîne plutôt que l'exécuter:

alert(this.responseText); 

Je dois vous dire que, à moins que vous avez contrôle total sur l'endroit où ce responseText vient, c'est un trou assez grand pour piloter un avion C130 à travers :-)

0
a= eval("("+this.responseText+")"); 
alert(a); 

Essayez le code ci-dessus. J'espère que ça va aider.

0

Le support est la cause. Essaye ça.

alert(eval(this.responseText)); 
1

_this.rtn_func (eval ('(' + this.responseText + ')'), _this.rtn_obj, _this.rtn_scope);

L'eval exécute directement le script. Tels que u ont réponse comme 12 + 3 + 4

sa forme

eval('(12 + 3 + 4)') 

cela devrait être le travail. Est-u essayer comme ça

Autre sage si le texte de la réponse que le nom de la fonction de retour ou bien des données de chaîne son erreur show

eval('(formdata())') 
Questions connexes