CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

récupérer une réponse avec AJAX

Pseudo supprimé
Pseudo supprimé 19 septembre 2010 à 18:05:42

Bonjour,

je cherche à traiter différemment deux parties d'une réponse avec AJAX en les plaçant dans 2 variables disctinctes :

la réponse obtenue :

<rep1> blabla111111 </rep1> <rep2> blabla22222 </rep2>

Si je fait :

var reponse = xhr.responseText;

toute la réponse sera mise en variable... alors comment dissocier les deux parties <rep1> blabla111111 </rep1> et <rep2> blabla22222 </rep2> pour les mettre chacune dans 2 variables distinctes ? :question:

Merci ! :)

kakulukian
kakulukian
Niveau 10
19 septembre 2010 à 19:15:37

La fonction split si j'ai bien compris ce que tu voulais :(

Pseudo supprimé
Pseudo supprimé 19 septembre 2010 à 21:56:17

Je sais pas très bien utiliser split, mais il n'y a pas un moyen plus simple avec xhr.responseText ?

un truc du genre :

xhr.responseText(<rep1>) :question:

deepblue
deepblue
Niveau 16
19 septembre 2010 à 22:07:16

A tester :

var foo = "<rep1> blabla111111 </rep1> <rep2> blabla22222 </rep2> ";

var rep = {
rep1:
foo.replace(/<rep1>(.*)<\/rep1>(.*)<rep2>(.*)<\/re
p2>/, '$1'),
rep2:
foo.replace(/<rep1>(.*)<\/rep1>(.*)<rep2>(.*)<\/re
p2>/, '$3')
};

alert(rep.rep1);
alert(rep.rep2);

deepblue
deepblue
Niveau 16
19 septembre 2010 à 22:07:54

rah, parse de merde :-(( :
http://wall.deblan.fr/x1c05/javascript/1/

lndiana-Jones
lndiana-Jones
Niveau 10
20 septembre 2010 à 15:37:08

si tu fais appel à un fichier XML alors tu peux utiliser xhr.responseXML
sinon tu peux utiliser JSON, la réponse doit être de cette façon:
{
"rep1" : "bla1111",
"rep2" : "bla2222"
}

ensuite
var res = JSON != null ? JSON.parse(xhr.responseText) : eval('(' + xhr.responseText + ')')

alert(res.rep1) // bla1111
alert(res.rep2) // bla2222

deepblue
deepblue
Niveau 16
20 septembre 2010 à 18:48:50

étant donné l'exemple de réponse xml, le format n'est pas valide (il manque un root node) :

Mauvais :
<foo></foo>
<bar></bar>

Bon :
<too>
<foo></foo>
<bar></bar>
</too>

Pour json, sont fichier ne lui en retourne pas donc on passe à autre chose =)

Pseudo supprimé
Pseudo supprimé 20 septembre 2010 à 19:12:37

merci pour vos réponses :ok:

si par exemple je fais :

var reponse = xhr.responseText;

var partie = reponse[1];

et que j'affiche ensuite la variable "partie" ça n'affiche rien ...

les variables ne sont pas considérée comme des arrays ? :question:

lndiana-Jones
lndiana-Jones
Niveau 10
20 septembre 2010 à 20:22:04

puisque que xhr.responseText retourne un string donc reponse[1] serait un caractère :ok:

deepblue> bah s'il peut pas changer le contenu de son fichier(donc pas de JSON et XML non valide) donc la seule solution qui reste est l'exp reg :hap:

Pseudo supprimé
Pseudo supprimé 20 septembre 2010 à 21:33:03
  1. donc reponse[1] serait un caractère

C'est ce que je me disais aussi, mais je n'arrive pas à l'afficher, d'où ma question : est-ce que ça fonctionne comme en PHP, à la manière d'un array avec des [1][2][3] :question:

lndiana-Jones
lndiana-Jones
Niveau 10
20 septembre 2010 à 21:37:29

pour ton cas ouais :ok:

Pseudo supprimé
Pseudo supprimé 20 septembre 2010 à 21:56:08

j'ai fait un test avec une variable quelconque dans laquelle je mets une chaîne, par exemple :

var teste = 'abcd';

si j'affiche :

'+teste[0]+'

il m'affiche bien : a

par contre avec :

var reponse = xhr.responseText;

si je j'affiche :

'+reponse[0]+'

il m'affiche rien ... est-ce que xhr.responseText renvoi bien une chaine :question:

lndiana-Jones
lndiana-Jones
Niveau 10
20 septembre 2010 à 22:01:24

alert(xhr.responseText) ça donne quoi?

deepblue
deepblue
Niveau 16
20 septembre 2010 à 22:01:46

alert(typeof xhr.responseText)

Pseudo supprimé
Pseudo supprimé 21 septembre 2010 à 06:52:52
  1. alert(xhr.responseText) ça donne quoi?

:d) Tout HTML le code de l'en-tête + la réponse avec les balises.

  1. alert(typeof xhr.responseText)

:d) string

:(

Pseudo supprimé
Pseudo supprimé 22 septembre 2010 à 15:21:53

finalement ça marche, c'est juste que reponse[0] tombait sur un caractère qui ne s'affiche pas, un caractère du code de l'en-tête.

mais je n'arrive toujours pas à supprimer des caractères en faisant :

reponse[50] = '';

si j'affiche '+reponse[50]+' il m'affiche toujours le caractère qu'il contenait.

:(

deepblue
deepblue
Niveau 16
22 septembre 2010 à 16:28:55

Tu veux toujours capturer le contenu de tes noeuds ? Si c'est le cas, prends ce que je t'ai fais, sinon, explique ce que tu veux.

Pseudo supprimé
Pseudo supprimé 22 septembre 2010 à 16:53:07

oui, mais je cherchais un truc plus simple que les regex, alors comme je sais précisément où se trouve les caractères que je veux récupérer je fait avec "variable[numéro]".

Mais le deuxième problème c'est que j'affiche le message en entier alors que je veux afficher seulement la deuxième partie (en enlevant les caractères que j'ai récupérer c'est à dire la première partie).

C'est pour ça que je veux modifier le message en enlevant des caractères en faisant :

reponse[50] = '';

mais ça marche pas :(

deepblue
deepblue
Niveau 16
22 septembre 2010 à 18:32:13

Dans ce cas, utilise le méthode substr. Mais dire que c'est plus simple, je ne pense pas.

Pseudo supprimé
Pseudo supprimé 22 septembre 2010 à 20:36:20

ok, merci pour substr je connaissais pas, et ça marche ! :) :ok:

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment