6

我正在进行 ajax 调用,并从responseText.

我通过alert在里面使用它来确认,它responseText包含整个页面作为string.

没关系。现在我需要通过将字符串转换为 DOM 并使用等从字符串中提取特定getElementsByTagName内容getElementsByName...

我的问题是这些似乎都不起作用。

我已经阅读了很多关于使用responseXML而不是的参考资料,responseText但这让我回来了null

那么,通过坚持responseText,我怎样才能得到我想要的特定元素呢?

例如,如果我的回复包含以下内容:

<html>
<head>....</head>
<body>....
 .....
 <table>
 <tr>
 <td>sometext</td>
 <td>someothertext</td>
 </tr>
 <tr>
 <td>sometext</td>
 <td>someothertext</td>
 </tr>
 <tr>
 <td>sometext</td>
 <td>someothertext</td>
 </tr>    
 </table> 
 <div> somediv </div>
 </body>
 </html>     

如何访问表格的第二行及其值?或 div 等。所以,现在在我的实际 html 中,我有这样的东西

<html>
<head>.....</head>
<body>
<table><tr><td id="test">Test</td></tr></table>
</body>
</html>

我希望在我的实际 html 表中解析提取的元素/值。

document.getElementById('test').innerHTML = the_extracted_elements_from_responseText

4

3 回答 3

13

您需要DOMParser在 html 上使用 a 并在结果文档上使用 DOM 遍历方法以返回所需的节点。

  var parser=new DOMParser();
  var xmlDoc=parser.parseFromString(responseText,"text/xml");
  var tds = xmlDoc.getElementsByTagName("td");

请注意,IE 将需要new ActiveXObject("Microsoft.XMLDOM");

于 2012-11-19T19:34:15.803 回答
0

创建变量数组并进行推送。

const result = [];
for(let i = 1; i < ?? ; i++) {
const test = document.getElementById('test').innerHTML;
result.push({ test })
}
return { result }
})
于 2020-08-02T02:50:01.930 回答
0

试试这个:

var temp = document.createElement('div');
temp.innerHTML = xhr.responseText;//xhr is your own xhr obj
//select the element u want, such as the follow one
var foo = temp.querySelector('#foo');
于 2021-06-18T06:38:39.860 回答