J'ai deux fichiers, l'un contenant un tableau en PHP qui est echo
ed via json_encode, et l'autre plein de fonctions javascript pour une page Web. Une telle fonction, qui ressemble à ceci (et inachevé):JSON Array ne pas décoder avec Eval
/*
* Function: selectVictim
* Called from function laserOn()
*
* Selects a random victim from a list of victims
*
* @return String: victim
*/
function selectVictim()
{
var params = "url=queenofsheep.com/Sheep/victims.php";
var request = new ajaxRequest();
request.open("POST", "victims.php", true);
request.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
request.setRequestHeader("Content-Length", params.length);
request.setRequestHeader("Connection", "close");
request.onreadystatechange = function()
{
if (this.readyState == 4)
{
if (this.status == 200)
{
if (this.responseText != null)
{
var vicString = this.responseText;
var vicArray = eval('"'+vicString+'"');
//var vicArray = vicString.split(',');
//var numVic = Math.floor(Math.random() * (vicArray - 1));
alert(vicArray);
}
else alert("Ajax error: No data received");
}
else alert("Ajax Error: " + this.statusText);
}
}
request.send(params);
}
est censé prendre dans le tableau de l'autre fichier et faire les choses à ce qui sont au-delà de la portée de cette question. Malheureusement, alors que this.responseText
contient un tableau codé JSON du format
var jsonArr =
["1","2,","3"]
activant la fonction ne fait rien, et eval
ing this.responseText
rendements « non défini. »
Qu'est-ce que je fais mal ici? Je peux fournir plus d'exemples du vrai code, du tableau actuel, peu importe, si besoin est. Ça me rend fou.
Votre sortie JSON est-elle 'var jsonArr = [" 1 "," 2 "," 3 "]' ou '[" 1 "," 2 "," 3 "]'? – BoltClock
L'ajout de guillemets autour du texte de la réponse indique qu'il s'agit d'une chaîne. Donc, il n'y a pas de résultat à l'évaluation. Essayez d'envelopper tout dans '()' donc: 'eval ('("' + vicString + '")'); Mais sachez que l'ajout de guillemets n'aboutira qu'à une chaîne de caractères ... Oh, et [Ne pas évaluer pour analyser JSON] (http://stackoverflow.com/questions/1843343/json-parse-vs-eval) – ircmaxell