IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

champs qui s'efface lors d'une requete ajax.


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 190
    Points : 80
    Points
    80
    Par défaut champs qui s'efface lors d'une requete ajax.
    Bonsoir à tous,
    j'ai créer un formulaire dans lequel j'ai mis plusieur champs tels que nom, prénom etc...
    j'ai également mis un select avec le pays et pour faire propre j'ai ajouté un peu d'ajax pour que les villes apparaissent sans rechargement quand on selectionne le pays.
    mon problème est le suivant lorsque j'ai rentré le nom et le prénom et qu'en suite
    je selectionne le pays, le nom et le prénom s'effacent et pourtant la page ne se recharge pas vu que c'est en ajax.
    Est ce que quelq'un pourrais m'éclairer ?

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    <?php
    session_start();
    ?>
    <!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">
    <?php
    //ne pas oublier de mettre les métas et la dtd -->
     
    $aTab = array (
    				''=> array(''),
    				Belgique => array ('Bruxelles', 'Brabant Wallon', 'Vlaams Brabant', 'Antwerpen','Limburg','Liege','Namur','Hainaut','Luxembourg'),
    			    France => array ('01 Ain','02 Aisne','03 Allier','04 Alpes-de-Haute-Provence','05 Hautes-Alpes','06 Alpes-Maritimes','07 ardeche','08 Ardennes','09 Ariege','10 Aube','11 Aude','12 Aveyron','13 Bouches-du-Rhône','14 Calvados','15 Cantal','16 Charente','17 Charente-Maritime','18 Cher','19 Correze','21 Cote-d or','22 Cotes-d Armor','23 Creuse','24 Dordogne','25 Doubs','26 Drome','27 Eure','28 Eure-et-Loir','29 Finistere','2a Corse-de-Sud','2b Haute-Corse','30 Gard','31 Haute-Garonne','32 Gers','33 Gironde','34 Hérault','35 Ille-et-Vilaine','36 Indre','37 Indre-et-Loire','38 Isere','39 Jura','40 Landes','41 Loire-et-Cher','42 Loire','43 Haute-Loire','44 Loire-Atlantique','45 Loiret','46 Lot','47 Lot-et-Garonne','48 Lozere','49 Maine-et-Loire','50 Manche','51 Marne','52 Haute-Marne','53 Mayenne','54 Meurthe-et-Moselle','55 Meuse','56 Morbihan','57 Moselle','58 Nievre','59 Nord','60 Oise','61 Orne','62 Pas-de-Calais','63 Puy-de-Dome','64 Pyrenee-Atlantique','65 Haute-Pyrenees','66 Pyrenees-Orientales','67 Bas-Rhin','68 Haut-Rhin','69 Rhone','70 Haute-Saone','71 Saone-et-Loire','72 Sarthe','73 Savoie','74 Haute-Savoie','75 Paris','76 Seine-Maritime','77 Seine-et-Marne','78 Yvelines','79 Deux-Sevres','80 Somme','81 Tarn','82 Tarn-et-Garonne','83 Var','84 Vaucluse','85 Vendée','86 Vienne','87 Haute-Vienne','88 Vosges','89 Yonne','90 Territoire de Belfort','91 Essonne','92 Hauts-de-Seine','93 Seine-Saint-Denis','94 Val-de-Marne','95 Val-d oise','971 Guadeloupe','972 Martinique','973 Guyane','974 La Reunion','975 Saint-Pierre-et-Miquelon','976 Mayotte','984 Terres Australes et Antarctiques','986 Wallis et Futuna','987 Polynesie Francaise','988 Nouvelle-Caledonie'),
    			  );
    ?>
     
    <html>
    <head>
    <link rel="stylesheet" type="text/css" href="style.css">
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<title>Inscription</title>
    </head>
    	<script type="text/javascript">
    		if (window.XMLHttpRequest) 
    			{
    				oXmlhttp = new XMLHttpRequest();
    			} 
    		else if (window.ActiveXObject) 
    			{
    				oXmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    			}
     
    function search (clef) 
    			{
    				oXmlhttp.open('POST','<?php echo $_SERVER['PHP_SELF']; ?>');
    				oXmlhttp.onreadystatechange=function()
    			{
    				if (oXmlhttp.readyState==4 && oXmlhttp.status == 200) {
    				document.body.innerHTML = oXmlhttp.responseText;
    			}
    			}
    				oXmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    				var data = 'pays='+clef
    				oXmlhttp.send (data);
    			}
     
    </script>
    <h1>test</h1>
    <h2>test</h2>
    <body>
     
    		<form action="inscription1.php" method="post" enctype="multipart/form-data">
    			<fieldset>
    				<legend>Information personnelles</legend>
    					<p>
    						<label for="login">Login:</label>
    							<input  id="login"type="text" name="login">
    					</p>
    					<p>
    						<label for="password">Mot de passe:</label>
    							<input type="text" name="password" id="password">
    					</p>
    					<p>
    						<label for="email">Email:</label>
    							<input type="text" name="email" id="email">
    					</p>
    					<p>
    			</fieldset>
     
    			<fieldset>
    				<legend>Informations visible de l'annonce</legend>
    					<p>
    						<label for="nom">Nom</label>
    							<input type="text" name="nom" id="nom">
    					</p>
    					<p>
    						<label for="age">Age:</label>
    							<select name="age">
    									<?php
    										for($i=18;$i<=65;$i++)
    										{
    											echo"<option>$i ans</option>";
    										}
    									?>
    							</select>
    					</p>
    					<p>
    						<label>Pays:</label>
    							<select name="pays" onchange="search (this.value);">
    									<?php
    										foreach ($aTab as $clef => $dump) 
    											{
    												$selected=(isset($_POST['pays']) && $_POST['pays'] == $clef)?'selected="selected"':'';
    												echo '<option value="',$clef,'" ',$selected,'>',$clef,'</option>';
    											}
    									?>
    							</select>
     
    <?php
    if (isset ($_POST['pays']) && !empty ($_POST['pays'])) 
    	{
    		echo '<label>Villes:</label><br /><select name="villes">';
    			foreach ($aTab[$_POST['pays']] as $val) 
    				{
    					echo '<option value="',$val,'">',$val,'</option>';
    				}
    		echo '</select>';
    	}
    ?>
     
     
    					<p>
    					<label for="url">Site web</label>
    						<input type="text" id="url" value="http://www.">
    					</p>
    					<p>
    					<label for="message">Message</label>
    						<textarea cols="16" rows="5" id="message"></textarea>
    					</p>
    					<p>	
    						<input type="submit" name="ok" value="envoyer">
    					</p>
     
     
     
    			</fieldset>
    		</form>
     
     
    </body>
     
    </html>

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Salut,

    apparement, vu ton javascript, tu remplaces TOUT le body par la réponse que te retourne ton appel http...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.body.innerHTML = oXmlhttp.responseText;
    Que te retournes exactement cet appel ?
    Etant donné la destination de ton post (à savoir PHP_SELF, donc la page courante), je dirais que ca te renvoie tout le html de cette même page, donc le code html correspondant à ton formulaire à l'état vide.
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 190
    Points : 80
    Points
    80
    Par défaut
    aurais tu une solution pour moi?
    car le javascript n'est pas dutout mon point fort

  4. #4
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Et bien déjà je te conseille de mettre ton post dans la section javascript

    Ensuite, pour donner un chemin à suivre:

    La page que tu appelles via ton XmlHttpRequest devrait uniquement te retourner une valeur. Ensuite, une fois ce retour effectué, il faut simplement assigner cette valeur de retour au champ dans ton formulaire, et non remplacer tout le body.

    Actuellement tu as deux problèmes: ton appel XmlHttpRequest a l'air de te retourner l'entierté de ta page. Ensuite tu remplaces l'entierté de ton body actuel par l'entierté du résultat que tu as récupéré.
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

Discussions similaires

  1. [WD16] GIF qui reste statique lors d'une requete
    Par EriCstoFF dans le forum WinDev
    Réponses: 19
    Dernier message: 09/03/2015, 09h48
  2. Message d'attente lors d'une requete ajax
    Par omar24 dans le forum jQuery
    Réponses: 5
    Dernier message: 04/05/2011, 19h05
  3. Requete sur des champs qui ne sont pas dans une autre table
    Par jean christophe dans le forum Débuter
    Réponses: 4
    Dernier message: 20/05/2010, 18h05
  4. Réponses: 13
    Dernier message: 10/05/2004, 16h49
  5. Erreur lors d'une requete INNER JOIN
    Par k-lendos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/03/2004, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo