【问题标题】:XMLHttpRequest responseXML is null on firefox 10XMLHttpRequest responseXML 在 Firefox 10 上为空
【发布时间】:2012-07-18 10:54:01
【问题描述】:

我在 firefox 插件中有 XMLHttpRequest,如下所示:

httpRequest = new XMLHttpRequest();
httpRequest.open("POST", baseUrl + "check.php?uid=" + username, true);
httpRequest.responseType = "document";
httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");      
httpRequest.setRequestHeader("Content-length", dataString.length);
httpRequest.setRequestHeader("Connection", "close");
httpRequest.onload = infoReceived;
httpRequest.send(dataString);

我在最新版本的 Firefox (14.0.1) 上工作得很好。

但是,在 Firefox ESR 10 上,httpRequest.responseXML 在处理程序过程 (infoReceived) 中为 null

有什么提示吗?

我查看了 MDN 文档,但没有关于 ESR 10 版本不兼容的说明。

【问题讨论】:

  • 响应的内容类型是什么?
  • 那么你期待什么? XMLHttpRequest 只解析 XML...
  • @WladimirPalant 你没有得到我想要实现的目标。我想将外国 HTML 解析为 DOM。现在我可以了。当然可以使用 XMLHttpRequest 。顺便说一下,你可以将它用于纯文本,json等...(不仅仅是 XML)
  • 当然可以 - 但responseXML 属性是为 XML 保留的。其他所有内容仅影响较新的 response 属性。顺便说一句,在我问你之前,你没有告诉你想要达到的目标。

标签: post firefox-addon xmlhttprequest


【解决方案1】:

好的,我知道了。

之前(处理函数内部):

var response = httpRequest.responseXML;

之后(处理函数内部):

var parser = new DOMParser();
var response = parser.parseFromString(httpRequest.responseText, "text/html");

之前(主要功能):

httpRequest.responseType = "document";

之后(主要功能):

//httpRequest.responseType = "document";

我还在MDN doc中找到了正确的信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 2015-09-05
    • 2017-06-17
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    相关资源
    最近更新 更多