Ajax probleme de code

Résolu/Fermé
togodo Messages postés 148 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 19 août 2009 - Modifié par togodo le 12/11/2010 à 17:43
togodo Messages postés 148 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 19 août 2009 - 27 déc. 2008 à 01:55
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 vendredi 19 septembre 2008 Statut Membre Dernière intervention 19 août 2009 8
24 déc. 2008 à 12:28
Pour noel Up plz :)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
24 déc. 2008 à 13:33
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 vendredi 19 septembre 2008 Statut Membre Dernière intervention 19 août 2009 8
24 déc. 2008 à 13:56
ok je verrais ça après demain.Merci et Bonne fête...
0
togodo Messages postés 148 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 19 août 2009 8
26 déc. 2008 à 18:31
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 déc. 2008 à 19:05
alors remplaces tout simplement l'url par data.txt
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 déc. 2008 à 20:48
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 vendredi 19 septembre 2008 Statut Membre Dernière intervention 19 août 2009 8
26 déc. 2008 à 20:50
C'est déjà le cas??
0
togodo Messages postés 148 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 19 août 2009 8
27 déc. 2008 à 01:55
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