10 votes

JQuery ajax() get xml response text

J'essaie de récupérer du XML à partir de l'API Gmail. J'ai ceci jusqu'à présent :

$.ajax({
    url: "https://mail.google.com/mail/feed/atom/",
    success: function(data) {
        console.log(data.responseText);
    }
});

Je sais avec certitude que le tableau de données a une valeur appelée responseText parce que c'est ce que la console me dit quand je mets mon code pour enregistrer les données. Cependant, lorsque j'essaie d'enregistrer data.responseText En revanche, il enregistre les données et ignore le fait que j'ai spécifié un paramètre (il ne dit pas que responseText n'est pas défini). Qu'est-ce que je fais de mal ?

Edit : voici une capture d'écran de ce que dit la console data est :

Edit, en réponse à Kevin : J'ai essayé ceci :

$.ajax({
    url: "https://mail.google.com/mail/feed/atom/",
    dataType: "xml",
    success: function(data) {
        console.log($("feed fullcount",data).html());
    }
});

il est écrit "Cannot call method 'replace' of undefined" :o

10voto

Kevin B Points 57721

data n'est pas un objet xhr, c'est votre chaîne xml convertie en un objet XML Document . Par conséquent, il n'a pas de responseText sauf si le document xml comporte un nœud responseText. De plus, ajoutez dataType: "xml" à vos options ajax si vous attendez du xml.

$.ajax({
    url: "https://mail.google.com/mail/feed/atom/",
    dataType: "xml",
    success: function(data) {
        console.log(data);
    }
});

Edit : Maintenant je vois dans votre question (après modification) que c'est en fait un objet xhr... C'est bizarre...

4voto

Miranda Points 434

Si vous souhaitez simplement afficher une réponse au format texte, vous pouvez simplement faire dataType: "text",

$.ajax({
  url: "https://miranda-zhang.github.io/cloud-computing-schema/v1.0/ontology.xml",
  dataType: "text",
  success: function(text) {
    $('textarea').val(text);
  },
});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea cols="60" rows="10"></textarea>

1voto

KraYz Vali Points 75

Essayez data.responseText[0] au lieu de data.responseText.

EDITAR: https://mail.google.com/mail/feed/atom/ Il me demande de me connecter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X