[AJAX] php include refresh sélectif

Résolu
ajax.include -  
Tiller Messages postés 781 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   211
 
(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   Statut Membre Dernière intervention   211
 
ouai normalement, donc dans ton cas:
<a href="index.php?page=lol" onclick="refresh(lol); return false;">
1
ajax.include
 
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   Statut Membre Dernière intervention   211
 
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
 
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   Statut Membre Dernière intervention   211 > ajax.include
 
Essai
<?php if ($_GET['truc'] == 'lol') { ?>class="active"<?php } ?>
0
ajax.include > Tiller Messages postés 781 Date d'inscription   Statut Membre Dernière intervention  
 
ç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
 
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
 
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
 
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
 
oublie la seconde question (je viens de saisir)
0
ajax.include
 
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
 
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