[AJAX] php include refresh sélectif

Résolu/Fermé
ajax.include - 10 juin 2008 à 18:01
Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008 - 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?)
A voir également:

7 réponses

Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008 210
10 juin 2008 à 18:57
(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';
}
?>
4
Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008 210
10 juin 2008 à 19:28
ouai normalement, donc dans ton cas:
<a href="index.php?page=lol" onclick="refresh(lol); return false;">
1
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)
0
Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008 210
10 juin 2008 à 22:14
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
1
ajax.include
11 juin 2008 à 01:07
une dernière question
<?php if ($truc == 'lol') { ?>class="active"<?php } ?>


ne marche plus
donc je pensais rajouter un ou ( || )
mais je ne sais pas quoi mettre
que dois-je vérifier comme variable ?
(vu que la bar d'adresse ne contient plus index.php?truc=lol)
avec ton "pg" ça ne fonctionne pas
comment faire?
0
Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008 210 > ajax.include
11 juin 2008 à 12:23
Essai
<?php if ($_GET['truc'] == 'lol') { ?>class="active"<?php } ?>
0
ajax.include > Tiller Messages postés 781 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 14 septembre 2008
11 juin 2008 à 12:39
ça marche pas

il faudrait pouvoir vérifier ta valeur pg (pg = lol en gros)

ce bout de code se trouve dans l'anchor je précise
0
ajax.include > ajax.include
11 juin 2008 à 12:45
If nothing is set in the address bar, the value of $_GET['n'] will be NULL, not ""(empty string) or false.
ça explique le probleme
il suffirait de remplacer $_GET par une autre méthode juste pour ajax.php
0
ajax.include > ajax.include
11 juin 2008 à 13:51
il faudrait récupérer la valeur de $_get avant quelle devienne null
l'assigner(set) à une autre variable qu'on vérifie (à la place de truc)
tu aurais une idée?

(j'ai vérifié et register_globals est bien on)
0
ajax.include
10 juin 2008 à 19:09
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ajax.include
10 juin 2008 à 19:19
oublie la seconde question (je viens de saisir)
0
ajax.include
10 juin 2008 à 22:47
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?
0
ajax.include
10 juin 2008 à 23:05
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 (?)
0