11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Voici mon problème.

J'ai une page HTML qui contient un menu de 3 éléments.
Quand je clique sur l'un des éléments, le contenue de ma DIV principale change, ce qui permet de ne pas avoir de rechargement de page.

L'un de ces 3 éléments de menu et une page PHP qui contiens un formulaire de contact.
Quand je clique sur CONTACT par le menu, la page PHP ne charge pas ( juste un script javascript , soit 3 lignes de texte) Smiley fache

Je tiens à préciser que le chargement de la page "présentation" charge et remplace la DIV "contenue1" normalement, le problème n'est que sur le chargement du formulaire PHP.
De plus, si je rentre l'URL direct de la page contact dans le navigateur, celle-ci fonctionne normalement.
Je suppose donc que cela viens de mon code JS, on dirai qu'au chargement du formulaire, qu'il y es une tentative d'envoie du formulaire, car j'ai un message de retour du formulaire, qui me dit qu'il n'est pas possible d'envoyer le formulaire tant que le mail n'est pas indiqué


Alors voila le code Javascript permettant de changer le contenu de la DIV principal:

/*page produits*/
		   $("a#produits").click(function(){ 	// on selectionne tous les liens et on définit une action quand on clique dessus
			page=($(this).attr("href")); // on recupere l' adresse du lien
			$.ajax({  // ajax
				url: page, // url de la page à charger
				cache: false, // pas de mise en cache
				success:function(donnees1){ // si la requêté est un succès
					produits(donnees1);	    // on execute la fonction afficher(donnees1)
				},
				error:function(XMLHttpRequest, textStatus, errorThrows){ // erreur durant la requete
				}
			});
			return false; // on desactive le lien
		   });

/* Page CONTACT*/
		   $("a#con").click(function(){ 	// on selectionne tous les liens et on définit une action quand on clique dessus
			page=($(this).attr("href")); // on recuperer l' adresse du lien
			$.ajax({  // ajax
				
				url: page, // url de la page à charger
				cache: false, // pas de mise en cache
				type : 'GET',
				dataType: "html",
				success:function(donnees2){ // si la requêté est un succès
					con(donnees2);	    // on execute la fonction afficher(donnees2)	
				},
				error:function(XMLHttpRequest, textStatus, errorThrows, erreur){ // erreur durant la requete
				}
			});
			return false; // on desactive le lien
		   });  
		});

/*Les fonctions*/
function produits(donnees1){
			var $objJQ = $("#contenu1");
			$objJQ.fadeOut('10',function(){
				$objJQ.html(donnees1);/*section*/
				$objJQ.fadeIn('10');
			});
			var $objJQ2 = $("#navigation");
			
			$('#a-active').remove();
			$('<li class="a"><a href="index.html">Accueil</a></li>').insertBefore($(".b"));	
		}
		
		function con(donnees2){
			var $objJQ = $("#contenu1");
			$objJQ.fadeOut('10',function(){
				$objJQ.html(donnees2);
				$objJQ.fadeIn('10');	
			});	
		}


Pour la page HTML ( index.html ) le menu.


<li id="a-active" class="a" a href="index.html">Accueil</li>
							<li class="b"><a id="produits"  href ="presentation.html">Présentation</a></li>
							<li class="c"><a id="con" href="contact.php">Contact/Devis</a></li>


et la DIV :

<div id="contenu1">	</div>



Si vous avez une petite piste je suis preneur!

Merci pour votre aide.

Cordialement.
salut Smiley smile

a les joies de l'ajax.. masi surtout de l'incompréhension deson utilisation Smiley smile

lorsque tu fait un ajax vers une page php l'ajax va lire l'écho...

donc ton js qui est hors balise PHP

si tu veux que ton php fonctionne il va falloi rfaire un echo de tout ton php (enfin des ses résultatntes Smiley cligne ) pour que cela s'affiche dans le retour ajax Smiley smile

sinon tu peux aussi voir du ôcôté des fonctions ob_ ob flush, ou encore eval.. à toi de voir selon ton niveau en php Smiley cligne
Bonjour, merci pour ta réponse.

Donc si je comprend bien, Ajax a besoin d'avoir un echo du fichier PHP ?

Je débute dans c'est langage, pense tu que je puisse le réaliser?

Merci
oui la manière la plus simple est de faire des echo de tes lignes php

ou plutot juste des variables

j e sais pas à quoi ressemble ton code php Smiley smile
cultroy a écrit :
Donc si je comprend bien, Ajax a besoin d'avoir un echo du fichier PHP ?

AJAX = Asynchronous JavaScript and XML
C'est "asynchrone" parce ça envoie une requête que serveur, qui doit la traiter en PHP (ou autre langage serveur) et renvoyer la réponse.
La différence avec une requête usuelle c'est que tu dis à AJAX dans quel élément de ta page il faut afficher le résultat, alors que dans les requête usuelle le navigateur remplace toute ta page par le résultat de la requête.
Merci pour l'explication PapyJP, je comprend un peu mieux le procces.

Pchlj, voila a quoi ressemble le code PHP, ce code est dans un fichier PHP ( form.php ), et sur la page contact.php, j'ai l'appel de ce code via "
<?php
	include("form.php");
	?>	



<?php
header('Content-Type: text/html; charset=iso-8859-1');
$cryptinstall="crypt/cryptographp.fct.php";
include $cryptinstall;  

$filename = "infos.php";
if(file_exists($filename))
{ ?>

	<?php
	include("infos.php");
	?>

	<?php
	
	if($_POST)
	{
		$from = htmlentities(stripslashes($_POST['e-mail']));
		$title1 = stripslashes($_POST['objet']);
		$title = "IPrint-Concept [$title1]";
		$content = stripslashes($_POST['message']);
		$nom = ucfirst(stripslashes($_POST['nom']));
		$prenom = ucfirst(stripslashes($_POST['prenom']));
		

		if($title1 != '') /* verification de l'objet */
		{
			if($content != '<br>' OR $content !=  '') /* vérification du message */
			{
			
				if($nom != '') /* vérification du champs 'nom' */
				{
					if($prenom != '')
					{
						$auteur = $prenom.' '.$nom;
					}
					else
					{
						$auteur = $nom;
					}
					
					if(chk_crypt($_POST['code']))
					{
						if (getenv("HTTP_CLIENT_IP"))
						$ip = getenv("HTTP_CLIENT_IP");
						elseif(getenv("HTTP_X_FORWARDED_FOR"))
						$ip = getenv("HTTP_X_FORWARDED_FOR");
						else
						$ip = getenv("REMOTE_ADDR");

						$useragent = $_SERVER['HTTP_USER_AGENT'];
						require_once('libs/useragent.php');
						
						$infosclient .= '<hr /><p>IP : <a href="http://ipgetinfo.com/index.php?ip='.$ip.'">'.$ip.'</a><br />';
						
						
						
						$infosclient .= 'User-agent : '.$useragent.'<br />';
						$userinfo = get_ua_info($useragent);
						$infosclient .= 'Navigateur : '.$userinfo['name'].' '.$userinfo['ua_version'].'<br />';
						$infosclient .= 'OS : '.$userinfo['os'].' '.$userinfo['os_version'].'</p>';
						$auteur = utf8_encode($auteur);
						$titre = utf8_encode($title);
						$contenu = utf8_encode($content);
						$headers  = 'MIME-Version: 1.0' . "\r\n";
						$headers .= 'Content-Type: text/html; charset=utf-8' . "\r\n";
						$headers .= 'From: '.$auteur.' <'.$from.'>' . "\r\n";
						if (@mail($email,$titre,$contenu,$headers))
						$ok = true;
						else
						$erreur = 'Votre message n\'a pas été envoyé pour une raison inconnue, merci de réessayer plus tard.';
						$erreuren = 'Your message hasn\'t been delivered because of an unknown reason, please try again later.';
						
						if($_POST['copie'])
						{
							$email = $from;
							@mail($email,$titre,$contenu,$headers);
						}
					}
					else
					$erreur = 'Code de vérification incorrect.';
					$erreuren = 'Checking code incorrect.';
				}
				else
				$erreur = 'Merci de renseigner le champs Nom';
				$erreuren = 'You must enter your name.';
			}
			else
			$erreur = 'Merci de renseigner le message';
			$erreuren = 'You must enter your message.';
		}
		else
		$erreur = 'Merci de renseigner l\'objet du message.';
		$erreuren = 'You must enter the object of message.';
	}
}


Merci du coup de main, si besoin, j'ai aussi le code de la page contact entière.
Bonjour,

Je n'es toujours pas trouvé de solution, en effet j'aurai besoin de conseil pour faire des echo des variable PHP du fichier "form.php" sur mon fichier js.

Je ne sais pas comment mit prendre, et par ou commencer.

Merci du coup de main. Smiley cligne