Les Allergies
Alimentaires
Posez votre question Signaler

[AJAX] php include refresh sélectif [Résolu]

ajax.include - Dernière réponse le 11 juin 2008 à 21:12
Bonjour,
j'ai ça pour l'instant
<div id="orange">
<?
switch(@$_GET['truc']) {
case 'lol':
include'hello.html';
break;
case 'lul':
include'salut.html';
break;
default:
include'silly.html';
}
?>
</div>

quand ça include ça refresh toute la page
donc je souhaiterais utiliser de l'ajax pour ne rafraichir que le div (orange) et pas la reste
(si le javascript est désactivé idéalement il faudrait que ça ~dégrade correctement)
je sais que c'est possible, malheureusement je ne suis pas doué en ajax
(pas d'iframe je précise)
qq1 aurait une idée? (voire une url avec un tutoriel?)
Lire la suite 

[AJAX] php include refresh sélectif »

16 réponses
Réponse
+4
moins plus
(si le javascript est désactivé idéalement il faudrait que ça ~dégrade correctement)

Pas trop compris sa.. Si ton javascript est désactivé, l'AJAX ne marchera pas, puisque c'est du pur javascript. De mon point de vue, je considere qu'une personne ayant désactivé le javascript n'a rien a faire sur mon site, donc je me pose pas trop se genre de question d'habitude.

Ensuite tu peux très bien faire quelque chose du genre:
Page 1:
<script>
//On declare la "fonction AJAX"
function getXhr()
{
	if(window.XMLHttpRequest)
		xhr = new XMLHttpRequest(); 
	
	else if(window.ActiveXObject)
	{
		try
		{
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e)
		{
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else
	{
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		xhr = false; 
	} 
	
	return xhr;
}

function refresh(pg)
{
	var xhr = getXhr();
	xhr.onreadystatechange = function()
	{
		if (xhr.readyState == 4 && xhr.status == 200)
		{
			reponse = xhr.responseText;
			document.getElementById('orange').innerHTML = reponse
		}
	}
	xhr.open('GET', 'ajax.php?truc=' + pg, true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send(null);
}
</script>
<div id="orange">
<?
switch(@$_GET['truc']) {
case 'lol':
include'hello.html';
break;
case 'lul':
include'salut.html';
break;
default:
include'silly.html';
}
?>
</div>




Et ta page ajax.php
<?
switch(@$_GET['truc']) {
case 'lol':
include'hello.html';
break;
case 'lul':
include'salut.html';
break;
default:
include'silly.html';
}
?>
Ajouter un commentaire
Réponse
+1
moins plus
ouai normalement, donc dans ton cas:
<a href="index.php?page=lol" onclick="refresh(lol); return false;">
ajax.include - 10 juin 2008 à 21:41
est ce que je dois enlevé
else
	{
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		xhr = false; 
	} 

?
(lorsque le javascript est désactivé je n'ai pas besoin de ce message)
Ajouter un commentaire
Réponse
+1
moins plus
Si le javascript est désactivé, cela ne prendra pas effet, l'alert se fait lorsque l'utilisateur a un navigateur trop vieux refusant cette méthode
Tiller- 11 juin 2008 à 19:23
Mon code marche j'ai testé, la variable $_GET ne disparait pas comme sa >.>
Je sais pas d'ou sa viens.. Peut etre de se register_global (*de merde*, conseil désactive le, sa attire que des problèmes)

http://tiller.sama.hd.free.fr/CCM/azerty.php

Ton probleme peut peu etre venir des <? essaie de mettre <?php à la place
ajax.include - 11 juin 2008 à 21:10
on ma aidé
donc j'ai réglé ça avec du js en plus
if (pg=="lol")
		document.getElementById("pre").className = "active";
	else
		document.getElementById("pre").className = "";
etc…

oui ça marche mais comme je dis plus haut vu que dans la barre d'adresse index.php?truc=lol est absent la valeur de $_GET['truc'] devient inacessible ou null (j'ai pensé à utiliser define pour avoir une contante...)
ça ne peut pas venir des <? puisque lorsque le js est off ça marche
si tu as un autre moyen je suis preneur
Tiller- 11 juin 2008 à 21:12
Je comprend toujours pas ta logique, l'url que je t'ai filé, sa marche parfaitement. Le JS ne bug absolument pas, je comprend pas ce que tu veux dire
Enfin bon, si sa marche.. c'est l'essentiel
Ajouter un commentaire
Réponse
+0
moins plus
euuuh ok (merci!)
ça utilise la classe xhr non?

2 questions :

1)
un truc du genre
<a href="index.php?page=lol" onclick="someFunction(); return false;"
fonctionne lorsque le javascript est désactivé mais je dois remplacer somefunction par quoi dans ton exemple?

2) ton ajax.php correspond à mon index.php ?
Ajouter un commentaire
Réponse
+0
moins plus
oublie la seconde question (je viens de saisir)
Ajouter un commentaire
Réponse
+0
moins plus
ok merci !
je suis en train de trafiquer pour le faire fonctionner correctement
histoire de charset et d'accent
mais je pense je vais m'en sortir ^^
j'ai rajouté
header('Content-Type: text/html; charset=ISO-8859-1');

dans ajax.php
ça ira?
Ajouter un commentaire
Réponse
+0
moins plus
ptites précisions pour les autres
tu avais oublié les '
onclick="refresh('lol'); …
et avec ce système pas moyen de bookmark et le back/précédent ne marche plus (?)
Ajouter un commentaire
Ce document intitulé « [AJAX] php include refresh sélectif » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?