Traitement Formulaire Ajax + Php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Traitement Formulaire Ajax + Php

Re: Traitement Formulaire Ajax + Php

par Stef » 21 déc. 2009, 11:28

Oui effectivement le blem venait de là...

Merci Fred!

Re: Traitement Formulaire Ajax + Php

par micetf » 21 déc. 2009, 10:51

Bonjour,
Le problème vient du bouton d'envoi :
<input type="submit" value="go" onclick="testajax()" />
qui soumet le formulaire sans attendre le résultat de la requete ajax.
Un input de type "button" serait plus approprié,
<input type="button" value="go" onclick="testajax()" />
mais il ne faudra alors pas oublier de soumettre le formulaire (si le test est positif) dans testajax().
Fred

Traitement Formulaire Ajax + Php

par Stef » 18 déc. 2009, 10:02

Hi everyone! : )

J'essaie de comprendre comment fonctionne l'interaction ajax-php pour le traitement d'un formulaire... Après des heures de recherches et de lecture j'ai bricolé le code ci-dessous; mais je n'obtiens pas le résultat escompter (exécution du code php + affichage résultat exécution dans la page).

Pourriez svp analyser mon code et me dire comment le faire fonctionner?

La page du formulaire, index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

	<head>
		<title>test...</title>
		<meta http-equiv="content-type" content="text/html;charset=utf-8" />
		<script type='text/javascript'>
		function testajax () {

			var texte = document.getElementById("field1").value;

			var xhr_object = null;

			if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
			else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
			else {

				alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
				return;

			}

			xhr_object.open("POST", "./ajax.php", true);

			xhr_object.onreadystatechange = function() {

				if(xhr_object.readyState == 4) {

					document.getElementById("put").innerHTML = xhr_object.responseText;

				}

			}

			xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			var data = "field1="+texte;
			xhr_object.send(data);

		}
		</script>
	</head>

	<body>
		<form>
			<input type="text" id="field1" name="field1" />
			<input type="submit" value="go" onclick="testajax()" />
		</form>
		<div id="put"></div>
	</body>

</html>
Le fichier de traitement, ajax.php
<?php
$field1 = $_POST['field1'];

echo $field1;
?>
Il ne se passe rien côté affichage après envoi du formulaire... Alors je suppose (s'il n'y a pas d'erreur côté javascript!) que ça vient du fichier ajax.php: ce n'est pas comme ça qu'on récupère les variables dans un tel cas...