Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取xhr响应并解析它_Javascript_Xmlhttprequest - Fatal编程技术网

Javascript 获取xhr响应并解析它

Javascript 获取xhr响应并解析它,javascript,xmlhttprequest,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.on

嗨,我做了一个如下的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')
但它只有在服务器设置了头的情况下才能工作

内容类型:text/xml

否则responseXML为null

那么我有什么选择呢

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

编辑:好的选项,哪一个更好: 1) 将xhr.responsetext解析为字符串
2) 重定向到响应页面并对其进行解析。如何操作,顺便说一句?

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

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

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

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

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