JQuery ajax()获取XML响应文本

9

我正在尝试从Gmail API中检索一些XML。 我目前有以下代码:

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

我确定数组数据中有一个名为responseText的值,因为当我让代码记录数据时,控制台告诉我。然而,当我尝试记录data.responseText时,它只记录了数据,并忽略了我指定的参数(它没有说responseText未定义)。我做错了什么?

编辑:这是控制台显示的data的截图:

编辑,回应 Kevin 的建议:我尝试了这个:

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

它说 "Cannot call method 'replace' of undefined" :o


1
"it logs data" = console.log(data) 会记录数据 - Bluefire
1
这是一个数组还是一个对象?我非常确定点符号在数组中不起作用。 - adeneo
1
地址似乎返回XML(实际上是Atom,但与XML几乎相同),当我尝试时,它既不是对象也不是数组? - adeneo
1
你确定你的脚本中没有其他的console.logs吗?因为文档已经正确返回,但是出现了一个XHR对象单独在一行上被记录下来了。 - adeneo
1
是的,在Chrome控制台中尝试过了,确实会在实际结果被记录之前给出XHR对象。 - adeneo
显示剩余4条评论
3个回答

10

data不是xhr对象,而是您转换为XML文档的xml字符串。因此,除非xml文档具有responseText节点,否则它没有responseText属性。如果您希望接收xml,请将dataType:"xml"添加到ajax选项中。

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

编辑:现在我在你的问题中看到(编辑后),它实际上是一个xhr对象……这很奇怪


1
我不确定,它是一个XMLDocument还是一个Object。很可能它是一个XML文档,并且可以像HTML一样遍历,例如 $("feed fullcount",data) - Kevin B
请看我对问题的编辑(因为在评论中发布格式良好的代码很困难)。 - Bluefire
我不知道您所说的格式是什么,但这里有一个来自控制台的XML截图:http://img696.imageshack.us/img696/9003/54263106.png - Bluefire
1
我可以看到它,它是常规的XML,可以使用jQuery中的常规DOM遍历方法访问。 - adeneo
嘿,没事了,我使用了xml2json插件将其转换为JSON格式。感谢你的帮助!Adeneo,我给你所有的评论点赞,以便你因此获得一些声誉。 - Bluefire
显示剩余3条评论

4

如果你只想要一个文本格式的响应,你可以简单地设置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>


1

当我尝试这样做时,它会显示“无法读取未定义的属性'0'”。然而,当我要求它告诉我data是什么时,它明确显示data有一个名为responseText的值。 - Bluefire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接