【问题标题】:XMLHttpRequest to stringXMLHttpRequest 到字符串
【发布时间】:2011-07-28 07:59:04
【问题描述】:

我正在尝试创建一个发送XMLHttpRequest 并返回包含响应内容的字符串的函数,但它总是返回null。我该如何解决这个问题?

代码:

函数 getPage() { 如果(窗口.XMLHttpRequest) { xmlhttp=新的 XMLHttpRequest(); } 别的 { xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); } xmlhttp.open('GET','page.php',false); xmlhttp.send(); xmlDoc = xmlhttp.responseXML; if ($.browser.msie) 返回 xmlDoc.xml; 否则返回 (new XMLSerializer()).serializeToString(xmlDoc); }

【问题讨论】:

  • 问题一:你用的是什么浏览器?有两种不同的代码路径。问题2:既然你好像在使用JQuery,为什么不使用$.get()?
  • 我在 jQuery 中使用 $.ajax() 因为它提供了更多选项。然后你可以只监听成功、完成和错误,看看你的问题是什么。
  • 我正在使用 jQuery。实际上,我可以使用xmlhttp.responseText 而不是xmlhttp.responseXML$.get() 是异步的吗?
  • xmlhttp.responseText 应该总是返回响应的内容,而 xmlhttp.responseXML 只有在响应是 xml 时才会返回。尝试记录 responseText 以查看实际的响应;可能是它不是 xml。

标签: javascript xml-serialization xmlhttprequest


【解决方案1】:

如果您至少使用 Internet Explorer,那么您的响应可能为空,因为响应中的 ContentType header 丢失或不正确。在 responseXML 属性上引用 Microsoft 的 documentation

如果 ... 多用途 Internet 邮件 扩展 (MIME) 类型不是 正确设置为支持的之一 MIME 类型...然后 responseXML 将 为空。

MSXML 6.0 支持的 MIME 类型 是:“文本/xml”、“应用程序/xml”或 任何以“+xml”结尾的东西,对于 例如“应用程序/rss+xml”。

版本支持的 MIME 类型 在 MSXML 6.0 之前是:“text/xml”, “应用程序/xml”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    相关资源
    最近更新 更多