11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
j'ai un soucis avec mon code qui es censé remplir un formulaire INPUT en fonction du menu déroulant SELECT
$("#numero").change(function () {
	$.ajax({
		url     : 'getData.php',
		type    : 'POST',
		dataType: 'json',
		data    : $('#numero').serialize(),
		success: function( data ) {
		       alert('ok');
		}
		,
		error: function(data)
		{
			$('#id_article').val(data.id_article);
			$('#name_article').val(data.name_article);
			alert('error');
		}
	});
});


getData.php
$sqlRequest  = "SELECT * from article where numero=:numero";
$req = $PDO->prepare($sqlRequest);
$req->execute(array(
	"numero" 	=> $_POST['numero'];
));
$data = $req->fetch();
$name  = $data['name'];
$id = $data['id'];
$arr = array( 'id_article' => $id, 'name_article' => $name);
echo json_encode( $arr );


mon formulaire
    <form id='myform'>
     <select name='numero' id='numero'>
       <option value=''>Select</option>
       <option value='1'>1</option>
       <option value='2'>2</option>
     </select>
     <input type='text' name='id_article' id='id_article'>
     <input type='text' name='name_article' id='name_article'>
    </form>


j'ai vérifié, la page getData.php renvoit les données sans problème
1- le soucis c'est du coté JS, elle exécute la fonction error, sans passer par success
2- j'ai essayé de faire passer les données par error, mais rien ne s'affiche dans les formulaire Smiley decu
Modifié par smith (01 Jul 2015 - 11:11)
c'est peut l'url est qui est mauvaise


url : 'getData.php'


si il passe pas par success c'est que y'a pas de retour.
Modifié par JENCAL (01 Jul 2015 - 16:36)
JENCAL a écrit :
c'est peut l'url est qui est mauvaise
url : 'getData.php'
si il passe pas par success c'est que y'a pas de retour.


j'arrive à voir que getData.php renvoit les données, donc pas de soucis de ce côté, cest ça que je ne comprends pas
Comment tu fais pour voir si GetData renvoi les données si l'ajax ne rentre pas dans le success ??

surtout que tu dis " J'ai essayé de faire passer les données par error, mais rien ne s'affiche dans les formulaire "

donc pour moi y'a pas de retour;

Je dit pas que ta requêtes ne renvoi pas de données, je dit que peut être l'ajax ne trouve pas ton fichier php

Si ajax va dans "error" c'est que l'appel à échouer


après je te conseil de faire

data    : $('#numero').find(":selected").text();

Modifié par JENCAL (01 Jul 2015 - 17:14)
J'ai pris ta ligne mais elle ne fonctionne pas, aucune donnée n'est envoyée

Pour voir l'opération, sur chrome j'appui sur F12, onglet Network, ensuite je choisis une valeur dans le formulaire, puis la page getData.php apparaît, je clique dessus, je vais dans l'onglet Headers, là je peux voir la réponse 200 (OK), en bas je peux voir les données envoyées, dans l'onglet preview je vois les réponse json
Ok bonne nouvelle alors !

Tu peux également tester le js, au lieu d'aller dans "Network" tu va dans "Sources", tu choisi ton fichier js, la ligne où y'a l'ajax, tu met un point d'arrêt et tu lance le <select> tu pourra alors voir qu'est ce qui est récupéré dans data, si il est "undifined" ou autres.
Modifié par JENCAL (02 Jul 2015 - 16:09)
Intéressant, j'ai réussi à avoir value: "1" ou value: "2" dans le scop en fonction de la valeur du <select>
mais je ne vois pas de 'data' dans ce debug

Mais j'ai réussi à trouver le problème, enfin pour être franc je sais pas ce qui s'est passé, un moment j'ai retiré la ligne dataType: 'json', puis remis... et là tout marche Smiley ohwell

Pour ceux qui passerons après, pour récupérer les données json c'est
$('#id_article').val(data['id_article']);
et non
$('#id_article').val(data.id_article);