2014-06-17 6 views
0

J'essayais d'intégrer du code Perl avec JavaScript et j'ai rencontré un problème où je voulais simplement voir la sortie d'un tableau que j'avais stocké dans Perl. Le code suivant me donne les éléments appropriés dans le tableau que j'ai stocké mais je ne suis pas capable de voir les éléments dans JavaScript.Attribuer une variable Perl à la variable Javascript

my @list_of_vendors; 
while(!$resultSet->EOF) { 
push @list_of_vendors, $resultSet->Fields("vendor")->Value; 
    $resultSet->MoveNext; 
} 

print "The First Vendor is: " . $list_of_vendors[0]. "\n"; 

Ce imprime The First vendor is: 3D Systems Le code suivant ne me semble pas donner les résultats que je veux ...

print <<ONE; 
<html> 
<body> 
<h4> Test Vendor Array Javascript </h4> 

<p id="demo"</p> 

<script type="text/javascript" language="JavaScript"> 
var myVendorArray = @list_of_vendors; 
document.write('<p> $list_of_vendors[0] is the same as myVendorArray[0] </p>'); 

</script> 
</body> 
</html> 
ONE 

Je pensais que cela me donnerait 3D Systems is the same as 3D Systems mais il donne un blanc pour le html écran. Est-ce que quelqu'un peut m'indiquer ce que je pourrais faire de mal? Ou pointez-moi dans la bonne direction pour déboguer ceci en utilisant notepad ++ ou un autre IDE utile pour cela. Merci beaucoup

+0

"Ne fonctionne pas" = ??? – AKHolland

+0

Désolé ne fonctionne pas nécessairement mais ne me donne pas les résultats que je pense qu'il est censé donner ... Je veux voir '3D Systems est le même que' 3D Systems' sur la page html ... mais pour une raison quelconque cela ne montre pas ... – koala421

+2

Avez-vous essayé de faire un "Voir la Source" pour voir le HTML généré? Je pense que le problème sera assez évident. . . – ruakh

Répondre

3

Tout ce qui est dans l'hérédoc de votre code est interpolé avec Perl mais interprété par le client comme JavaScript. Donc, si vous écrivez

@list_of_vendors = ("Alice","Bob","Charlie"); 
... 
print <<EOF; 
... 
<script> 
var list_of_vendors = @list_of_vendors; 
... 
EOF 

ce que le client verra est quelque chose comme

var list_of_vendors = Alice Bob Charlie; 

Perl a de très bonnes installations pour convertir des structures de données Perl dans la notation JSON, qui est facilement comprise par JavaScript, vous devrait faire quelque chose comme:

use JSON; 
$list_of_vendors_json = encode_json(\@list_of_vendors); 
... 
var list_of_vendors = $list_of_vendors_json; 
... 

auquel cas le navigateur verrait quelque chose comme:

var list_of_vendors = ["Alice","Bob","Charlie"]; 

et le reste de votre code fonctionnerait comme prévu.

+0

Dois-je télécharger JSON pour ces deux travaux ou est-ce une fonctionnalité au sein de perl qui peut être fait ou est-il un certain type de dessus pour ça? – koala421

+1

Installez le module 'JSON' avec' cpan'. – mob

+0

Ça marche! ... merci beaucoup – koala421

Questions connexes