【问题标题】:Get xhr response and parse it获取 xhr 响应并解析它
【发布时间】:2014-01-30 22:36:07
【问题描述】:

您好,我创建了一个这样的 xmlHttpRequest:

var xhr = new XMLHttpRequest();

var params = 'gbook_text=' + encodeURIComponent('sdfsdf');

xhr.open("POST", '/gbook/save/7697256.html', true)
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    console.log(xhr.responseText);
  }
}


xhr.send(params);

我需要从响应中解析一些数据,这只是一个网页 我需要通过像 getElementById() 这样的 dom 方法来解析它。 我知道我可以写这样的东西:

xhr.responseXML.getElementById('author')

但只有在服务器设置了标头时才有效

内容类型:文本/xml

否则 responseXML 为空

那么我有什么选择呢?

P.S:只有 js 没有任何库。 P.P.S:浏览器要求:chrome、ff、ie8+

已编辑:好的选项,哪个更好: 1) 将 xhr.responsetext 解析为字符串 2)重定向到响应页面并解析它。顺便说一句,怎么做?

【问题讨论】:

  • 您的浏览器支持要求是什么?
  • @Jon ie 8 +, chrome, ff
  • 如何在 cmets 中使用 @Jon 回复您?
  • 不确定你的意思...你已经回复了,我收到了回复通知(两次)。 @ 前缀负责后者,尽管在某些情况下系统足够聪明,可以自行通知。
  • 我是认真的,我只是以为你没有收到通知,因为它没有突出显示你的昵称。

标签: javascript xmlhttprequest


【解决方案1】:

如果我理解您的问题,您只能以文本形式获取您的回复,但您想将其作为 HTML 文档进行搜索,您可以尝试创建一个 div 并将 html 响应作为 div 的 innerHTML。

var res = document.createElement( 'div' );
res.innerHTML = xhr.responseText;
res.querySelector("#ElementID")

【讨论】:

    【解决方案2】:

    您是否尝试过设置responseType 和/或使用overrideMimeType 方法?

    xhr.responseType = 'document';
    xhr.overrideMimeType('text/xml');
    

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 2011-06-21
      相关资源
      最近更新 更多