Ajax probleme de code

Résolu
togodo Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   -  
togodo Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je voudrais savoir ce qui ne vas pas dans le code suivant.
En local ça ne marche pas et avec un serveur apache local non-plus.

PS : Je suis newBie, je dois faire un mini-rapport sur l'Ajax pour un prof mais c'est pas ma spécialité les langages Internet à vrai dire.



Pour IE :

var requeteAjax = new ActiveXObject('Microsoft.XMLHTTP');
requeteAjax.open('GET','data.txt',false);
requeteAjax.send(null);
alert(requeteAjax.reponseText);
document.write("<div ID='Reponse' style='position: absolute;top:40px;left:10px'>")
document.write(requeteAjax.reponseText);
document.write("</div>")
var div1=document.getElementById('Reponse');
div1.innerHTML= "Youpie"
$('Pseudo').innerHTML="123"

function $(id)
{
return document.getElementById(id);
}


Et pout FF :

var requeteAjax = new XMLHtppRequest();
requeteAjax.open('GET','./data.txt',false);
requeteAjax.send(null);
document.write("<div ID='Reponse' style='position: absolute;top:40px;left:10px'>")
document.write(requeteAjax.reponseText);
document.write("</div>")

var div1=document.getElementById('Reponse');
div1.innerHTML= "Youpie"
$('Pseudo').innerHTML="$$$$$$$$$$$$$$"

function $(id)
{
return document.getElementById(id);
}



PS: Mon problème vient de l'objet "requeteAjax"

Merci

A voir également:

6 réponses

togodo Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   8
 
Pour noel Up plz :)
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
tiens un petit exemple

function makeRequest(url,nom_champ_poste,id_lire,id_ecrire){
	var http_request = false;
		//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Abandon :( Impossible de créer une instance XMLHTTP');
            return false;
        }
        http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
		// lancement de la requete
		http_request.open('POST', url, true);
		//changer le type MIME de la requête pour envoyer des données avec la méthode POST ,  !!!! cette ligne doit etre absolument apres http_request.open('POST'....
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		obj=document.getElementById(id_lire);
		data=nom_champ_poste+"="+obj.value;
        http_request.send(data);
}

function traitementReponse(http_request,id_ecrire) {
	var affich="";
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
					// cas avec reponse de PHP en mode texte:
			//chargement des elements reçus dans la liste
			var affich_list=http_request.responseText;
			//alert(affich_list);
				obj = document.getElementById(id_ecrire); 
                obj.innerHTML = affich_list;
		} 
		else {
                alert('Un problème est survenu avec la requête.');
        }
    }
}


et l'appel de la fonction:


<html>
<form >
<!-- le onChange dans la liste appelle le script Javascript Ajax en lui passant les arguments attendus -->
<select name="liste1" onChange="makeRequest('reponsePhp_Ajax.php','selection_liste','liste1','id_reponse');">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
</form>
</html>

et dans le script php appele:
reponsePhp_Ajax.php

<?php
$selection_liste=$_POST['selection_liste'];
//ton traitement par exemple lecture dans une BDD Mysql
$reponse="blabla";
//et l'envoi de la réponse:
echo $reponse;
?>
0
togodo Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   8
 
ok je verrais ça après demain.Merci et Bonne fête...
0
togodo Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   8
 
Je refais un petit up.

Mon but n'est pas d'utiliser du phpmais simplement de l'Ajax donc du Javascript....

Je veux simplement savoir ce qui ne vas pas dans mon code????
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
alors remplaces tout simplement l'url par data.txt
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Ce qui ne va pas dan ston code:

tu fais deux scripts, un pour FF l'autre pour IE

il faut tout mettre dans le même script comme fait au début de mon exemple ou on teste quel est le navigateur utilisé par le client:

//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }



ensuite le principe d'Ajax c'est d'appeler le serveur pour avoir une réponse sans recharger la page, pas d'écrire qq chose qui est déja dans la fonction ("Youpi" )

il faut que dans ta page tu ai déja le <div id='reponse'></div>

et c'est la que ajax va venir ecrire par innerHTML

donc ajax va appeler la page data.tx et son contenu sera écrit dans le div
0

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

Posez votre question
togodo Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   8
 
C'est déjà le cas??
0
togodo Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   8
 
Enfait il manque un "S" dans alert(requeteAjax.reponseText);
C'est alert(requeteAjax.responseText);


Rallala l'Anglais quand tu nous tiens... pfff dégouté quand même du temps qu'il ma fallu

Heureusement il y a firebug qui est très utile....
0