Eléphant du PHP |
68 Messages
30 juil. 2007, 18:03
Merci pour votre aide, mais cela ne change toujours rien
La page est une page réservée à des membres inscrits, je vais essayer d'isoler mes scripts dans un dossier séparé, je vous tiens au courant et si cela ne marche toujours pas, je posterai le lien vers ce dossier ici...
Merci beaucoup
Alors voilà, rien à voir avec le rafraîchissement, ou en tout cas un autre problème apapraît avant, c'est le passage du paramètre idj que je récupère avec un $_GET['idj']
Voici mes trois fichiers:
Le fichier de base form1.php, contient le formulaire initial:
Code : Tout sélectionner
<script type="text/javascript" src="annee_xhr.js" charset="iso_8859-1"></script>
<?//début script page
echo'<h2><b>Débugage AJAX - Choisis un joueur</b></h2>';
// on remplit le tableau avec les joueurs
$visu_ok[]='joueur1';
$visu_ok[]='joueur2';
//on construit la boite
echo '<select onchange="getannee(this.value);" name="visu_ok" size="1">
<option value="vide">choix du joueur</option>';
foreach($visu_ok as $value) {echo '<option >'.$value.'</option>';}
echo '</select><span id="blocannee"></span><br />
';
?>
Le fichier intermédiaire php appelé par le js
Code : Tout sélectionner
<?php
include('../param_actuel.inc');
/**
* Code qui sera aeeplé par un objet XHR et qui
* retournera la liste déroulante des saisons disponibles
* correspondant au joueur sélectionné.
*/
/* On récupère l'identifiant du joueur choisi. */
if (isset($_GET['idj']))
{$idj = $_GET['idj'];
echo('Tu as clique '.$idj);
}
/* Sinon on retourne un message d'erreur */
else
{
echo("<p>Une erreur s'est produite. Le joueur sélectionné comporte une entrée invalide.</p>\n");
}
?>
et finalement mon fichier js
Code : Tout sélectionner
/**
* Lister les année d'un joueur avec un objet
* XMLHTTPRequest.
*/
/* Création de la variable globale qui contiendra l'objet XHR */
var requete = null;
/**
* Fonction privée qui va créer un objet XHR.
* Cette fonction initialisera la valeur dans la variable globale définie
* ci-dessus.
*/
function creerRequete()
{
try
{
/* On tente de créer un objet XmlHTTPRequest */
requete = new XMLHttpRequest();
}
catch (microsoft)
{
/* Microsoft utilisant une autre technique, on essays de créer un objet ActiveX */
try
{
requete = new ActiveXObject('Msxml2.XMLHTTP');
}
catch(autremicrosoft)
{
/* La première méthode a échoué, on en teste une seconde */
try
{
requete = new ActiveXObject('Microsoft.XMLHTTP');
}
catch(echec)
{
/* À ce stade, aucune méthode ne fonctionne... mettez donc votre navigateur à jour ;) */
requete = null;
}
}
}
if(requete == null)
{
alert('Impossible de créer l\'objet requête,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.');
}
}
/**
* Fonction privée qui va mettre à jour l'affichage de la page.
*/
function actualiserannee()
{
var listeannee = requete.responseText;
var blocListe = document.getElementById('blocannee');
blocListe.innerHTML = listeannee;
}
/**
* Fonction publique appelée par la page affichée.
* Cette fonction va initialiser la création de l'objet XHR puis appeler
* le code serveur afin de récupérer les données à modifier dans la page.
*/
function getannee(idj)
{
/* Si il n'y a pas d'identifiant de région, on fait disparaître la seconde liste au cas où elle serait affichée */
if(idj == 'vide')
{
document.getElementById('blocannee').innerHTML = '';
}
else
{
/* À cet endroit précis, on peut faire apparaître un message d'attente */
var blocannee = document.getElementById('blocannee');
blocannee.innerHTML = "Traitement en cours, veuillez patienter...";
/* On crée l'objet XHR */
creerRequete();
/* Définition du fichier de traitement */
var url = 'cherche_annee.php?idj='+ idj;
/* Envoi de la requête à la page de traitement */
requete.open('GET', url, true);
/* On surveille le changement d'état de la requête qui va passer successivement de 1 à 4 */
requete.onreadystatechange = function()
{
/* Lorsque l'état est à 4 */
if(requete.readyState == 4)
{
/* Si on a un statut à 200 */
if(requete.status == 200)
{
/* Mise à jour de l'affichage, on appelle la fonction apropriée */
actualiserannee();
}
}
};
requete.send(null);
}
}
Merci pour votre aide
PS: La démo
ici