获取xhr响应并解析它

时间:2014-01-30 22:36:08

标签: javascript xmlhttprequest

嗨,我这样做了一个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);

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

xhr.responseXML.getElementById('author')

但仅当服务器设置标题

时才有效
  

Content-Type:text / xml

否则responseXML为null

那么我的选择是什么?

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

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

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你只能用文本回复你的回复,但是你想要将它作为HTML文档搜索,你可以尝试创建一个div并将html响应作为div的innerHTML。< / p>

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

答案 1 :(得分:0)

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

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