Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/06/2011, 12h17   #1
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 35
Points : 7
Points : 7
Par défaut passage texte avec response.write

Bonjour à tous,

J'ai une page aspx où j'ai 1 fonctions js :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
addArticle(s) {
document.getElementById("t").innerHTML="Load..."
            xmlhttp=new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    document.getElementById("t").innerHTML=xmlhttp.responseText;
                    if (document.getElementById("t").innerHTML == "ok")
                    {
                        location.href(location.href);
                    }
                }
            }
            xmlhttp.open("GET",s,true);
            xmlhttp.send();
            document.getElementById("t").innerHTML=s;
            }
}
j'appelle cette fonction à différents endroits dans cette page..

je fais le traitement des données sur une autre page aspx et à la fin je renvoie "ok" via .

Normalement, comme vous pouvez le voir dans mon code, si la reponse est "ok", je redirige la page.
Or actuellement j'ai "ok" qui s'affiche sur ma page.
Si je fais alert(xmlhttp.responseText) juste avant le if pour la redirection, il me renvoie tout ce qu'il y a dans la balise <head> et après "ok"..

Pouvez-vous m'orienter sur mon erreur, sur ce qui m'a échappé, svp ?

Merci d'avance
dev31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 08h29   #2
Membre habitué
 
Inscription : septembre 2009
Messages : 85
Détails du profil
Informations personnelles :
Âge : 22
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2009
Messages : 85
Points : 101
Points : 101
Je n'suis pas sur mais je crois que location s'utilise de la sorte:
Code :
document.location.href="ton_url"

Est ce qu'il rentre dans le if quand tu renvoie ok?

Code js :
1
2
3
4
document.getElementById("t").innerHTML=xmlhttp.responseText;
if(xmlhttp.responseText =="ok"){
       document.location.href="ton_url"
}
gototog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 09h20   #3
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 35
Points : 7
Points : 7
merci de ta réponse.

location.href n'est pas un problème, il fonctionne bien. après, c'est vrai qu'il y a plusieurs façons de l'utiliser

étant donné que xmlhttp.response ne me renvoie pas que "ok" mais des balises avec, non ça ne rentre pas dans le if :/ et c'est ça le problème, je ne vois pas pourquoi il me renvoie tout ce qu'il y a dans <head>
dev31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 09h28   #4
Membre éclairé
 
Avatar de brachior
 
Homme Jérôme Pilliet
Étudiant
Inscription : mai 2011
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Pilliet
Âge : 25
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 190
Points : 305
Points : 305
la méthode response renvoie le contenu de la page, c'est à dire les sources.
Il est normal que s'il y a des balises, elle les récupères

Si jamais tu récupères un texte en gras,
Et que tu l'affiches dans une div,
Il sera en gras parce qu'il recopiera les balises Oo

Si tu ne veux pas de soucis,
Fais en sorte que ta page que tu récupères ne contienne rien d'autre que ton texte.
Tu te fiches qu'elle soit valide w3c ou bien compris par les navigateurs,
Car elle ne te sert que à récupérer des valeurs.
(même l'encodage n'est pas pris en compte, en AJAX il faut de l'UTF-8 je crois ^^)
brachior est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 10h19   #5
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 35
Points : 7
Points : 7
merci pour ta réponse.

la page que je récupère est structurée comme ça :
Code :
1
2
3
4
<head id="Head1" runat="server"/>
<% //traitements ....
Response.write("ok")
%>
si j'enlève la balise head, ma fonction n'affiche que "load..." et donc la suite ne s'exécute pas correctement.
et si j'enlève les <% %>, le code n'est bien sur pas interprété...
dev31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 11h48   #6
Membre éclairé
 
Avatar de brachior
 
Homme Jérôme Pilliet
Étudiant
Inscription : mai 2011
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Pilliet
Âge : 25
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 190
Points : 305
Points : 305
J'ai jamais fait d'Aspx donc je vois pas trop ^^
Mais peut être que tu peux contourner le problème en insérant ton résultat dans une balise html tu pourrai alors le récupérer autre part:

Code :
1
2
3
4
5
 
<head id="Head1" runat="server"/>
<% //traitements ....
<span id='resultatMaPageASPX'>Response.write("ok")</span>
%>
et dans ta page qui l'appelle :

Code :
1
2
3
4
5
 
var temp = document.getElementById("temp");
temp.innerHTML = xmlhttp.responseText;
if (temp.getElementById("resultatMaPageASPX").innerHTML == "ok")
  ...
brachior est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 15h49   #7
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 35
Points : 7
Points : 7
je viens de tester et le résultat est le même :/
dev31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 16h22   #8
Membre éclairé
 
Avatar de brachior
 
Homme Jérôme Pilliet
Étudiant
Inscription : mai 2011
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Pilliet
Âge : 25
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 190
Points : 305
Points : 305
Arf,
Et Response, il a quoi comme méthodes ?
Je ne connais pas ASPX,
Mais il y a peut-être des méthodes spécifiques
Pour mettre du texte dans des balises ou autre ...
brachior est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 12h26   #9
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : février 2010
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Développeur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 360
Points : 545
Points : 545
Bonjour,

getElementById n'est pas une méthode présente sur tout les éléments, mais un méthode de l'objet window.document !

Donc la solution proposé aura plus de chance de fonctionner comme ceci :

Code javascript :
1
2
3
4
5
6
 
var temp = document.getElementById("temp");
temp.innerHTML = xmlhttp.responseText;
if (temp.getElementsByTagName("span")[0].innerHTML == "ok") {
....
}

Sinon, le problème semble plus être un problème d'asp que de javascript...
Si la page renvoie correctement l'information... pas de soucis sur le javascript !
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 10h09   #10
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 35
Points : 7
Points : 7
merci pour vos réponses.

je ne vois pas trop à quoi pourrait correspondre "temp" du document.getElementById("temp") sachant que j'ai la structure suivante :

Code :
1
2
3
<div id="div1">
	<span id="t"></span>
</div>
et le code serait plutôt sans [0], non ?
Code :
if (temp.getElementsByTagName("span").innerHTML == "ok")
dev31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 10h19   #11
Membre éclairé
 
Avatar de brachior
 
Homme Jérôme Pilliet
Étudiant
Inscription : mai 2011
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Pilliet
Âge : 25
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 190
Points : 305
Points : 305
getElementsByTagName(tagname)
renvoie la liste des éléments du type (de balise) tagname
donc nadox précise qu'il faut prendre le premier (et dans notre cas le seul)

l'élément temp correspond à ton div1 ou ton t
en gros, c'est l'élément où tu veux stocker ton résultat temporaire.
brachior est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 10h36   #12
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 35
Points : 7
Points : 7
en passant par cette variable temporaire, j'ai un message d'erreur au niveau du if avec le getElementsByTagName : impossible de récupérer ce qu'il y a dans le innerHTML, il est soit null ou indéfini...
dev31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 11h10   #13
Membre éclairé
 
Avatar de brachior
 
Homme Jérôme Pilliet
Étudiant
Inscription : mai 2011
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Pilliet
Âge : 25
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 190
Points : 305
Points : 305
Juste une question,
As tu testé le retour de ta page ASP ?
En gros, as tu essayé d'afficher dans un alert le résultat de xmlhttp.responseText ?
brachior est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 11h33   #14
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 35
Points : 7
Points : 7
oui, c'est une des premières choses que j'ai fait !

je vous l'ai même dit.. je récupère "ok" en plus du contenu de la balise <head>.

c'est bien ça le problème ! je voudrai récupérer uniquement "ok"..
dev31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 12h13   #15
Membre éclairé
 
Avatar de brachior
 
Homme Jérôme Pilliet
Étudiant
Inscription : mai 2011
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Pilliet
Âge : 25
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 190
Points : 305
Points : 305
Oui d'accord,
Mais est ce que tu vois bien la balise que t'essayes de récupérer ?

Dans mon exemple c'était :
Code :
<span id='resultatMaPageASPX'>ok</span>
brachior est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 16h16   #16
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 35
Points : 7
Points : 7
je vois exactement ceci :
Citation:
<head>//tout ce qu'il y a dedans</head> ok
dev31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 16h35   #17
Membre éclairé
 
Avatar de brachior
 
Homme Jérôme Pilliet
Étudiant
Inscription : mai 2011
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Pilliet
Âge : 25
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 190
Points : 305
Points : 305
Donc je suppose que la méthode Response.write() écrit du html ?

et si tu fais :

Code :
Response.write("<span id='resultatMaPageASPX'>ok</span>")
brachior est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h06.


 
 
 
 
Partenaires

Hébergement Web