Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/05/2008, à 08:50

Nimois

Recharger une partie (uniquement) d'une page web

Bonjour,

j'ai une page web composée de plusieurs divisions <div>

je souhaite a partir d'un lien d'une des divison , mettre a jours une autre division sans recharger toute la page , je sais qu'il existe une solution en ajax , mais je sais pas laquelle , merci d'avance de bien vouloir m'aider.

Cordialement


http://www.afrikhiphop.com

Hors ligne

#2 Le 08/05/2008, à 10:09

Keldath

Re : Recharger une partie (uniquement) d'une page web

Code JavaScript :

//Fonction qui récupère l'élément possédant l'ID passe en paramètre
function $(id) {return document.getElementById(id);}

//Écran de chargement
var load_screen = '<div style="">Chargement...<br /><img src="../images/loader.gif" alt="loader" /></div>';

//Fonction pour créer un objet XMLHttpRequest
function createObjectAJAX() {
	var xhr_object = null;
	if(window.XMLHttpRequest) //Pour Firefox
		{xhr_object = new XMLHttpRequest();}
	else if(window.ActiveXObject){ // Internet Explorer 
		try {
			xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) 
		{
			xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	// XMLHttpRequest non supporte par le navigateur
	else {alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return;}
	return xhr_object;
}

//Fonction pour changer le contenu d'un conteneur précis
// prmScript = nom du script PHP sur le serveur qui renverra le contenu à afficher
// prmTarget = l'ID de ton Div conteneur
function loadDiv(prmScript,prmTarget) {

	//Creation de l'objet XMLHttpRequest
	xhr_object = createObjectAJAX();
	
	//On envoie la requete
	xhr_object.onreadystatechange=function() {
		var response=null;
		var ready=xhr_object.readyState;
		
		if(ready == 4 ) response=xhr_object.responseText;
		else response=load_screen; // Ecran de chargement dans le conteneur
		
		$(prmTarget).innerHTML=response;
	};
	xhr_object.open("POST", "scripts/"+prmScript+".php", true);
	xhr_object.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
	
	xhr_object.send(send);
	
	//Une fois la reponse recue, on l'injecte dans l'element souhaite
	if(xhr_object.readyState == 4 && xhr_object.status == 200)
	$(prmTarget).innerHTML=xhr_object.responseText;
}

En vrac... smile même s'il y a des manières plus pros sûrement (avec l'utilisation de Framework AJAX et d'XML). J'essaie d'apprendre tout ça aussi tongue
Pense à changer quelques trucs, comme le chemin d'accès de tes scripts PHP dans loadDiv(), l'image de chargement etc...
Après il ne te reste plus qu'à faire appelle à ta fonction loadDiv lorsque tu cliques sur un lien ou un élément à l'aide du onclick="loadDiv("nom_script","id_div_cible");"

Dernière modification par Keldath (Le 08/05/2008, à 10:19)

Hors ligne

#3 Le 08/05/2008, à 14:05

Nimois

Re : Recharger une partie (uniquement) d'une page web

merci beaucoup, j'essaye ca de suite cool:cool:


http://www.afrikhiphop.com

Hors ligne

#4 Le 08/05/2008, à 16:33

Keldath

Re : Recharger une partie (uniquement) d'une page web

Tout fonctionne comme tu le souhaites ?

Hors ligne

#5 Le 10/05/2008, à 07:18

Nimois

Re : Recharger une partie (uniquement) d'une page web

a vrai dire je sais pas trop comment utiliser le script dans ma page.
voici a quoi ressemble a peu pres a ma page

echo '<div id="result">//ici il ya l'aafichage de plusieurs ligne avec une boucle
.........
<td>...........<a href=application.php?val=';echo $zik->getId();echo ">Lire</a> / <a href=";echo $zik->getAdresse();<br>
</div>

echo '<div id="player">
//dans cette div , j'ai une fonction player qui prend en paramettre getId() de la premiere division';
player($id);echo'
</div>';


j'ai essayé de bidouillé ton script mais j'arrive pas a l'adpater a ma page

http://www.afrikhiphop.com

Hors ligne

#6 Le 11/05/2008, à 07:28

Nimois

Re : Recharger une partie (uniquement) d'une page web

Keldath , nan ca marche pas trop sad


http://www.afrikhiphop.com

Hors ligne

#7 Le 12/05/2008, à 09:08

Nimois

Re : Recharger une partie (uniquement) d'une page web

Keldath help please big_smile


http://www.afrikhiphop.com

Hors ligne

#8 Le 16/05/2008, à 09:38

Keldath

Re : Recharger une partie (uniquement) d'une page web

Yep, désolé du retard tongue

En fait, tu cherches à tout faire en même temps avec le même script, alors tu n'y arriveras pas. Si je saisis bien, ton DIV result contient une liste de musiques et tu aimerai écouter chacune d'entre elles dans le DIV player quand tu cliques sur une ?

Il faut bien discerner les étapes qu'il se passe :

-Le navigateur demande un document HTML

-Le serveur Web crée le document HTML demandé dynamiquement avec PHP : ta page qui aura ton DIV result remplis avec les "liens" de tes musiques, et ton DIV player lui sera vide (il doit se remplir seulement quand on clique sur une musique, c'est ça ?)

-Le serveur Web envoie le document HTML au navigateur

-Le navigateur a désormais une page comme celle-ci qui s'affichera :

<html>
	blablabla
	<div id="result">
		les "liens" de tes musiques, ou plutôt des boutons avec une fonction
		JavaScript ( la fameuse loadDiv(); ) qui ne rechargera que le contenu du DIV player.
		Je détaillerai plus tard.
	</div>
	<div id="player"></div>
	blablabla
</html>

À partir de là, tu ne dois plus attaquer directement le serveur Web (par des liens classiques <a>, ou par l'envoie d'un formulaire, etc) sinon l'intégrité de ta page sera rechargée, et tu perdras l'intérêt de la technique AJAX.

Ce que doit afficher ton DIV player, c'est un autre script qui en aura le rôle (appelons le load_player.php). Ce script sera attaqué par la fonction JavaScript loadDiv(); (qu'il faudra modifier un petit peu pour qu'elle réponde à tes besoins : générer le contenu du DIV player en fonction de l'ID de la musique sélectionnée).

Je continuerai plus tard, je n'ai pas trop le temps ce matin smile

Dernière modification par Keldath (Le 16/05/2008, à 09:46)

Hors ligne