11496 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Depuis quelques jours je suis confronté à un curieux problème. J'essaye d'afficher dynamiquement des checkbox pour que lors du clic sur une checkbox, une requete sql soit envoyé pour récupérer les niveau x dépendant du niveau cliqué soit affiché. J'utilise donc ajax, en méthode post, mais aucune donnée n'est envoyé dans mon fichier php.

Voilà mon javascript (la fonction qui crée le XHTMLRequest est dans un fichier à part)
function request(oDiv) {
	
	var testCoche = document.getElementById('ni1id'+oDiv).checked;
	//alert(testCoche)
	if(testCoche == true){
		var valeur = document.getElementById('ni1id'+oDiv).value;
		valeur = encodeURIComponent(valeur);
		var xhr   = getXMLHttpRequest();
		//alert(valeur);
		xhr.onreadystatechange = function() {
			if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
				readData(xhr.responseXML);
				document.getElementById("loader").style.display = "none";
			} else if (xhr.readyState < 4) {
				document.getElementById("loader").style.display = "inline";
			}
		};
		
		xhr.open("POST", "niv2ScriptPhp.php", true);
		xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xhr.send("valeur="+valeur);
	}
	else
		document.getElementById("niv2id").innerHTML = "";
		//document.getElementByName('formNiv1[]') = false;
}

function readData(iData) {
	var nodes = iData.getElementsByTagName("item");
	var iDiv = document.getElementById("niv2id");
	var iInput, iType, iName;
	
	//iDiv.innerHTML = "";
	for (var j=0, c=nodes.length; j<c; j++) {
		iInput = document.createElement("input");
		iType = document.createTextNode(nodes[j].getAttribute("type"));
		iName = nodes[j].getAttribute("name");
		iNom = nodes[j].getAttribute("nom");
		iId = nodes[j].getAttribute("id");
		iInput.value = nodes[j].getAttribute("value");
		
		iInput.type = "checkbox";
		iInput.name = iName;
		iInput.id = iId;
		iDiv.appendChild(iInput);
		iDiv.innerHTML +=" " + iNom + "<br />";
	}
}


Mon fichier php :


<?php

header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
echo "<list>";

$idNiv1 = (isset($_POST["valeur"]));
var_dump($_POST);
//echo $idNiv1;
$j = 0;
if ($idNiv1)
{
	/*mysql_connect("localhost", "root", "");
	mysql_select_db("universmysql");*/
	
	$query = mysql_query("SELECT niv1_url,niv2,niv2_url FROM produits WHERE niv2_url!='' AND niv1_url=\"" . $idNiv1 . " GROUP BY niv2 ORDER BY niv2 ASC");
	while ($back = mysql_fetch_assoc($query))
	{
		echo "<item value=\"" . $back["niv2_url"] . "\" nom=\"" . $back["niv2"] . "\" type=\"checkbox\" name=\"formNiv2[]\" id=\"ni2id$j\" class=\"niv2cl\" />";
		$j++;
	}
}
else
{	
	echo "<item value=\"$idNiv1\" name=\"formNiv2[]\" type=\"checkbox\" id=\"pb\" nom=\"Problème\"  />";
}

echo "</list>";

?>


J'ai testé la requête directement dans la base de donnée, elle fonctionne. Et la variable "valeur" dans le javascript contient bien la valeur voulue (j'ai testé avec un alert).

Quand j'écris send("valeur" + valeur), rien de s'affiche.
Quand j'écris send(valeur=valeur), une checkbox avec "Problème" s'affiche.

J'ai pas mal cherché sur le net mais je n'ai rien trouvé qui ne m'ai vraiment aidé...

Merci d'avance à ceux et celles qui se pencheront sur mon problème.
Modifié par Sinam (09 Apr 2014 - 15:36)
Finalement j'ai trouvé, cela viens d'un problème de sql en fait, il aime pas quand je récupère la valeur pour la mettre dans la requête.