0

我正在解析从 AJAX 请求返回的一些 XML,但我有一个特殊情况,我必须在解析之前检查。有时服务器会返回一些 HTML,如果是这种情况,我需要在页面上执行重新加载。问题是,当我尝试对 head 元素中的 META 标记进行简单检查时,我一直没有得到任何返回。

以下是返回的 html 示例。

<html>
    <head>
    <title>Redirection</title>
    <META HTTP-EQUIV="REFRESH" URL="https://testurl/desktop"/> 
    <META HTTP-EQUIV=Pragma CONTENT=no-cache>
    </head>
</html/>

下面是我用来尝试和调试的 jQuery 片段。xml var 是 $.ajax() 调用的成功方法返回的内容。

parseXml(xml) {
    $(xml).parent().find('META').each(function() {
        location.reload();
    });
}

.find() 方法永远不会找到 META 标记并退出并导致我的代码中断。任何建议将不胜感激。

这是使用 $.ajax({ type: 'POST', url: '?action=someAction&target=someTarget', success: function(response) { try { var orders = parseXml(response); } });

这是我通常会返回的示例 xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<ORDERS>
    <ORDER STATUS="OPEN" ID="62452254" DATE="May 5" />
    <ORDER STATUS="FILLED" ID="341411" DATE="May 8" />
</ORDERS>
4

1 回答 1

0

我认为您不需要 .parent(),您可能需要在函数中提取 URL 属性。

编辑:从评论中获取更多空间进行实验:

alert(xml);
var h = $(xml).html();
alert(h);

前一个警报显示内容,后一个警报显示null<head> 中 <link> 元素的 Jquery 选择器似乎在接受的答案中有一个优雅的答案:

来自 [jQuery] 文档http://api.jquery.com/jQuery/#jQuery2

在传递复杂的 HTML 时,某些浏览器可能无法生成完全复制所提供的 HTML 源的 DOM。如前所述,我们使用浏览器的 .innerHTML 属性来解析传递的 HTML 并将其插入到当前文档中。在此过程中,某些浏览器会过滤掉某些元素,例如 、 、 或 元素。因此,插入的元素可能不代表传递的原始字符串。

于 2012-05-08T01:02:14.310 回答