11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Ma question vient se greffer sur le sujet du meme titre de mars 2016,
dont voici la partie PHP :


<?php
$tab1= Array(1,2,3,4,5);
$tab2=Array("oui","non","pas vrai");
$var1="possible";
$var2="France";
$tab = [];
$tab["tab1"] = $tab1;
$tab["tab2"] = $tab2;
$tab["var1"] = $var1;
$tab["var2"] = $var2;
echo json_encode($tab);
?>


et la partie JS :


$(document).ready(function(){
$.ajax({
	type : 'POST',
	url : 'php/test.php',
	data : 'name=Eric',
	dataType : 'json',
	success : function(data){
		var tab = data;
		alert("tab1 = " + tab["tab1"][0]);// 1
		alert("tab2 = " + tab["tab2"]);// "oui","non","pas vrai"
		alert("var1 = " + tab["var1"]);// "possible"
		alert("var2 = " + tab["var2"]);// "France"
	}
});

});




Ceci fonctionne très bien.

Ma question est,
Pourquoi, si je remplace les alert par des innerHTML, cela ne fonctionne que pour le premier appel, ensuite j'ai un "TypeError: Cannot set property"

document.getElementById("chemin1").innerHTML = tab["tab1"][0];
renvoi bien 1
mais je passe en erreur sur la ligne suivante :
document.getElementById("chemin2").innerHTML =tab["tab2"];

Par avance merci pour votre réponse.

jjRando
Bonjour jjRando,

ton tab['tab2"] contient un tableau il faut donc que tu lui donne un indice:
tab['tab2'][0] par exemple comme ton tab['tab1'].

Avec alert cela fonctionne car cette fonction arrive à interpréter tous ton tableau d'un coup! Je suppose que c'est comme cela pour faciliter le debug...

Bonne journée