11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai repris un code :
http://forum.alsacreations.com/topic-5-32677-1-resoluJquery--Ajouter-des-lignes-automatiquement-a-un-tableau.html

Bref, je l'ai modifié et j'ai quelques soucis. J'aurais besoin d'un peu d'aide.

La page affiche à la base une ligne avec deux formulaires.
Quand on clique sur la ligne ou quand on tape quelque chose dans un des formulaire, ça appelle une fonction qui :
- ajoute une ligne à la suite si la ligne cliquée est la dernière ligne (1)
- entre les données des deux formulaires de la ligne dans la BDD (2).

(1) marche bien mais (2) ne marche pas. J'essaye de faire ça en AJAX avec jQuery.

Je pense qu'il y'a un problème au niveau du commentaire "ICI". L'erreur doit être le "ligne" mais je vois pas quoi d'autre mettre...

<script type="text/javascript" src="js/jquery.js">
<script src="js/jquery.min.js"></script>

<table id="tableau"></table>

<script>
	var nbligne = 1;
		
	function nouvelleligne(nbligne){
		return 	'<form action="/" name="'+ nbligne +'" onKeyPress="ajouterligne($(this));" onclick="ajouterligne($(this));">' +
			'<input name="id" type="text" />' +
			'<input name="surf" type="text" />' +
			'</form>';
	}
		
	// on crée la première ligne
	var nouvelle_ligne = nouvelleligne(nbligne);
	$(nouvelle_ligne).appendTo("#tableau");
				
	function ajouterligne(ligne){
	
		// Si c'est la dernière ligne	
		if(ligne.attr('name') == nbligne){
			// On insert la nouvelle ligne
			nbligne ++;
			var nouvelle_ligne = nouvelleligne(nbligne);
			$(nouvelle_ligne).insertAfter(ligne);
		}

		$(ligne).ajax({ //ICI
			url:'traitement.php',
			type: 'POST',
			data: $(this).serialize(),
			success: function(html) {
				alert('ce que renvoie le fichier PHP' + html);
			}
		});	
	}	
</script>


Dans traitement.php il n'y a qu'un return $_REQUEST('id');

Un grand merci.
Modifié par 1stance (20 Apr 2011 - 15:30)
bonjour,

pas besoin de "ligne"

		$.ajax({ //ICI

			url:'traitement.php',

			type: 'POST',

			data: $(this).serialize(),

			success: function(html) {

				alert('ce que renvoie le fichier PHP' + html);

			}

		});	
Merci ! Ca exécute le fichier PHP.

Mais je croyais que :
       
success: function(html) { 
               alert('ce que renvoie le fichier PHP' + html); 
} 

me renvoyait ce que renvoie le fichier PHP ??

Ca suffit pas de mettre un "return $_REQUEST['id'];" dans traitement.php ?
Parce que là il me renvoie rien.

Peut-être qu'en faisant $.ajax({ ... il ne sait pas sur quoi exécuter le traitement.php ? En l'occurence il ne sait pas que "form" existe ?

Merci encore !
Modifié par 1stance (20 Apr 2011 - 16:08)
je pense que ton probleme viens du $(this).serialize, je n'utilise pas cette fonction, je ne peux pas t'aider pour le moment, je regarderai ça à tête reposé quand je serai rentré ce soir.
J'ai "réussi". Ça marche en remplacant :

data: $(this).serialize(),

par

data: $('[name=f'+ nbline +']').serialize(),


Maintenant mon PHP renvoi :
Array (
[id ] =>
[surf ] =>
)


Alors que dedans je viens de mettre des valeurs.
Si je crée mes inputs avec :
value="qqch"


J'aurai
Array (
[id ] => qqch
[surf ] => qqch
)


Et même si je change les valeurs des forms, ça les met pas à jour quand il les envoie au PHP.
Tu sais comment récupérer les valeurs "dynamiques" ?
Modifié par 1stance (20 Apr 2011 - 18:26)
à mon avis tu as une erreur au niveau du nom du form, je sais pas si c'est pareil dans le code que tu utilises, mais y a un f qui traine dans
data: $('[name=f'+ nbline +']').serialize(),

alors qu'il n'est pas dans le HTML