Page 1 sur 2

Problème Ajax

Posté : 10 avr. 2010, 11:49
par noone67210
Bonjour,

pour un projet nous sommes entrain de vouloir actualisé juste une partie d'un site donc en ajax actualisé juste une div aperemment notre code ne fonctionne pas donc si quelqu'un voit une erreur flagrante ici :S ?

function lanceAjax()
{

var httpRequest = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,...
httpRequest = new XMLHttpRequest();
if (httpRequest.overrideMimeType) {
httpRequest.overrideMimeType('html/javascript');
// Voir la note ci-dessous ? propos de cette ligne
}
}
else
if (window.ActiveXObject) { // IE
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
}
}
}

if (!httpRequest)
{
alert('Abandon :( Impossible de cr?er une instance XMLHTTP');
return false;
}

//httpRequest.onreadystatechange = function()
// {
// liste(httpRequest);
// };
httpRequest.open("POST", "acc_ajax.php", true);
httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
var param = "aff_page="+this.id;
alert(param);// ici variable
httpRequest.send(param);


}





et dans une autre page.php (la div que l'on veut actualisé )

<?php
$t = $_POST['aff_page'];
echo "contenu_ajax.innerHTML=".$t.";";
?>



merci beaucoup d'avance

Re: Problème Ajax

Posté : 10 avr. 2010, 11:55
par noone67
biensur il y a :

Code : Tout sélectionner

var presentation = document.getElementById("presentation"); var actualites = document.getElementById("actualites"); var agenda = document.getElementById("agenda"); var critiques = document.getElementById("critiques"); var histoire = document.getElementById("histoire"); var photos = document.getElementById("photos"); var disco = document.getElementById("disco"); var events = document.getElementById("events"); var formu = document.getElementById("formu"); var mail = document.getElementById("mail"); var lien = document.getElementById("lien"); var aff_page; presentation.onclick=lanceAjax actualites.onclick=lanceAjax agenda.onclick=lanceAjax critiques.onclick=lanceAjax histoire.onclick=lanceAjax photos.onclick=lanceAjax disco.onclick=lanceAjax events.onclick=lanceAjax formu.onclick=lanceAjax mail.onclick=lanceAjax lien.onclick=lanceAjax

Re: Problème Ajax

Posté : 10 avr. 2010, 14:44
par devlop78
Je trouve ton code assez bizarre. Avec tous ces try et catch. Mais bon ...

presentation.onclick=lanceAjax
actualites.onclick=lanceAjax
agenda.onclick=lanceAjax
critiques.onclick=lanceAjax
histoire.onclick=lanceAjax
photos.onclick=lanceAjax
disco.onclick=lanceAjax
events.onclick=lanceAjax
formu.onclick=lanceAjax
mail.onclick=lanceAjax
lien.onclick=lanceAjax

pourquoi pas déjà mettre lanceAjax(), puisque c'est une fonction, et rajouter ';' après chacun. J'imagine que le problème n'est pas là mais tu as demandé si je voyais qqchose qui me chocait et ça ça me choque ;)

Re: Problème Ajax

Posté : 10 avr. 2010, 15:25
par noone67
Bas non c'est de l'évènementiel java script y'a pas besoin et pis les onlick marchent le alert se fait bien mais ca se rafraichit quand même pas : (

Re: Problème Ajax

Posté : 10 avr. 2010, 16:16
par devlop78
Débeug !!! Mets des alert() un peu partout et voit jusqu'ou ça va

par exemple

opération 1
alert('1');
opération 2
alert('2');
opération 3
alert('3');

Et si tu vois par exemple que l'alerte 3 ne s'affiche pas, tu verras à peu près où ça coince.

Re: Problème Ajax

Posté : 10 avr. 2010, 16:43
par noone67
Mais justement tout passe sauf que ca actualise pas au final, j'ai déjà testé des alert partout

Re: Problème Ajax

Posté : 10 avr. 2010, 16:55
par Nours312
Mais justement tout passe sauf que ca actualise pas au final, j'ai déjà testé des alert partout

heu ... dans ta fonction, ou se trouve la ligne sensée inscrire le retour d'ajax dans la div en question ??

ou traites tu la réponse du serveur ?

Re: Problème Ajax

Posté : 10 avr. 2010, 17:24
par noone67
Mais justement tout passe sauf que ca actualise pas au final, j'ai déjà testé des alert partout

heu ... dans ta fonction, ou se trouve la ligne sensée inscrire le retour d'ajax dans la div en question ??

ou traites tu la réponse du serveur ?

pas sur de comprendre de quoi tu me parle je suis pas ultra confirmé en ajax :S

Re: Problème Ajax

Posté : 10 avr. 2010, 18:33
par Nours312
bon, le principe de l'ajax, c'est qu'un script javascript appel une page pour récupérer une réponse (header, text, xml, ...) ensuite, il utilise cette réponse pour faire quelquechose (ici modifier le contenu d'une div ... c'est ça ?)

actuellement, une fois la réponse reçue tu n'en fait pas grand chose !... donc comment veux tu que la div change !?

Re: Problème Ajax

Posté : 10 avr. 2010, 19:16
par Nours312
bon, je vais t'en dire plus, car il se peux que tu ne vois pas ce qui cloche ::

tu as une fonction : httpRequest.onreadystatechange = function() qui dans l'état ne sert à rien !... // c'est une fonction qui est pourtant appelée à chaque changement d'état de la requete ... (appel de la page, connexion, récupération des données, ...)

ton objet httpRequest est utile, car il va contenir la réponse de ta requete ajax, tu dois donc le vérifier et l'utiliser dans la fonction ci-dessus

if(httpRequest.readyState == 4)
document.getElementById('idDeTaDiv).innerHTML = httpRequest.responseText;

1. on vérifie que la requête s'est correctement réalisée,
2. on inscrit dans la div la réponse reçue ... (tu va surement devoir refaire ton php pour avoir le résultat souhaité ;)

@+

PS : quel tuto t'as utilisé pour faire ça ?

Re: Problème Ajax

Posté : 10 avr. 2010, 19:25
par noone67
Euh le tuto je sais plus mais il balancait juste un peu de code comme ça :S

voici ou j'en suis :


function lanceAjax()
{

var httpRequest = null;
var param = "aff_page="+this.id;
alert(param);

if (window.XMLHttpRequest) { // Mozilla, Safari,...
httpRequest = new XMLHttpRequest();
if (httpRequest.overrideMimeType) {
httpRequest.overrideMimeType('html/javascript');
// Voir la note ci-dessous ? propos de cette ligne
}
}
else if (window.ActiveXObject) { // IE
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
document.getElementById('contenu_ajax').innerHTML = 'Impossible de communiquer avec le serveur';
}
}
}

if (!httpRequest)
{
alert('Abandon :( Impossible de cr?er une instance XMLHTTP');
return false;
}

httpRequest.onreadystatechange = function()
{

if( httpRequest.readyState == 4 )
{
if( httpRequest.status == 200 )
{
if ( httpRequest.responseText != "" )
{
document.getElementById('contenu_ajax').innerHTML = httpRequest.responseText ;
}
else
{
document.getElementById('contenu_ajax').innerHTML = httpRequest.responseText ;


}
}
else
{
document.getElementById('contenu_ajax').innerHTML = 'Une erreur est survenue : ';
}

}
};

httpRequest.open("POST", "acc_ajax.php", true);
httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
var param = "aff_page="+this.id;
//alert(param);// ici variable
httpRequest.send(param);


}

presentation.onclick=lanceAjax
actualites.onclick=lanceAjax
agenda.onclick=lanceAjax
critiques.onclick=lanceAjax
histoire.onclick=lanceAjax
photos.onclick=lanceAjax
disco.onclick=lanceAjax
events.onclick=lanceAjax
formu.onclick=lanceAjax
mail.onclick=lanceAjax
lien.onclick=lanceAjax
histoire.onclick=lanceAjax
photos.onclick=lanceAjax
disco.onclick=lanceAjax
events.onclick=lanceAjax
formu.onclick=lanceAjax
mail.onclick=lanceAjax
lien.onclick=lanceAjax

Re: Problème Ajax

Posté : 10 avr. 2010, 19:46
par noone67
et voici le code php :

<?php
$t = $_POST['aff_page'].".php";
echo "contenu_ajax.innerHTML='".include("$t")."'";

?>

Re: Problème Ajax

Posté : 10 avr. 2010, 20:00
par noone67
Bon ca marche merci vraiment à tous pour votre aide :D

par contre sur ma div qui se change j'ai un truc bizarre qui s'écho : contenu_ajax.innerHTML=1

Sinon ca include bien les autres pages comme il faut :D

Re: Problème Ajax

Posté : 11 avr. 2010, 16:16
par noone67
Par contre j'ai un autre problème maintenant, le fait que je fait du innerHTML de certaines pages php bas les formulaire de ces pages php ne sont pas envoyé donc ca pose problème :S ?

Re: Problème Ajax

Posté : 13 avr. 2010, 09:20
par Truc
Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ