11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,
je souhaiterai envoyer un formulaire en Ajax à l'aide de Prototype :

function Action(form) {
new Ajax.Updater($('info'),'formulaire.php',{method: 'post', parameters: Form.serialize(form), asynchronous:false});
}


Mon formulaire :

<form action="#" onSubmit="Action($(this));return false" name="editForm">
			<textarea id="cpEdit" name="content"></textarea>
			<br />
			<input type="submit" value="Enregistrer" onClick="form.formAction.value='Save'" />
			<input type="text" name="code" value="" />
			<div id="info"></div>
</form>


Finalement la requête envoyer ne contient que les champs Input et non le textarea.

Pour le textarea n'est pas sérialisé ?
Il faut un peu plus de code pour pouvoir t'aider, ce que tu as mis ne suffit pas.
Mais c'est sûrement parce que ton script récupère les input via document.getElementsByTagName('input') et ignore de ce fait les textarea et select.
Bonjour,

Je me permet de relancer ce post car mon sujet est proche. J'utilise Prototype pour faire facilement de l'ajax sur la partie administration d'un site. L'une des pages permet de modifier les infos d'une fiche descriptive. J'ai un seul problème : les caractères accentués (accents) du seul champ en <textarea> du formulaire ne passent pas

Le code produit sur la page :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

[...]
<form id="InfosAlbum" name="InfosAlbum">
  <input id="titre" name="titre" value="Chanson Planet / a e &eacute; &euml;" type="text" class="ctrl_texte" size="40" />
  <textarea id="commentaire" name="commentaire"  cols="40" rows="6">a e a e  </textarea>
[...]
</form>


Le javascript exécuté si on clique sur le bouton pour sauvegarder :

function ValiderModifsAlbum()
{
	
	WriteDiv("BlocResultat","Enregistrement en cours...");
	//document.getElementById("action").value = "majAlbum";
	
	var url = "ajax/disco_ajax_post.php" ;
	
	//new Ajax.Request(url,
	new Ajax.Updater("BlocResultat", url,
	{
		parameters : Form.serialize("InfosAlbum"),
		
		onSuccess : function (xmlHttp)
		{
			//WriteDiv("BlocResultat","Requête Ajax exécutée avec succès");
		},
		
		onFailure : function (xmlHttp)
		{
			WriteDiv("BlocResultat","La requête AJAX a &eacute;chou&eacute;e.");
		},
		
		onComplete : function (xmlHttp)
		{
			getListeAlbums();
			getAlbum(id_album);
		}
		
		
	}); // fin de new Ajax.Updater
	
}


La fonction PHP qui est exécutée par la requête AJAX :

function majAlbum($id_album)
{
	$sql = "UPDATE disco_album SET " .
				 "titre = '" . utf8_decode($_POST["titre"]) . "', " . 
				 "commentaire = '" . utf8_decode($_POST["commentaire"]) . "' " .
				 "WHERE id_album = " . $id_album ;
				 
	//echo htmlentities($_POST["commentaire"]) ;
	
	$connexion = $_SESSION["connexion"] ;
	$requete = mysql_query ($sql,$connexion);
}


Et la fonction PHP (appelée en AJAX également) :

function getAlbum($id_album)
{
	if ($id_album == null || $id_album == "")
	{
		print "Erreur : id_album null";
		exit;
	}
	
	$sql = "SELECT * FROM disco_album WHERE id_album = $id_album";
	$connexion = $_SESSION["connexion"] ;
	$requete = mysql_query ($sql,$connexion);
	
	while ($resultat = mysql_fetch_object ($requete))
	{
		$id_album = $resultat->id_album ;
		$commentaire = ($resultat->commentaire) ;
	}
[...]


J'ai cru lire sur le web qu'il y avait un pb avec le form.serialize de Prototype. Comment résoudre ce problème ?
Merci merci d'avance pour votre aide.
Modifié par OpenMac (23 Jun 2008 - 20:33)