【问题标题】:jQuery not parsing HTML returned from AJAX requestjQuery 不解析从 AJAX 请求返回的 HTML
【发布时间】:2012-05-16 09:22:19
【问题描述】:

我正在解析从 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 的 sn-p。 xml var 是 $.ajax() 调用的成功方法返回的内容。

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

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

这里是 ajax 调用 $.ajax({ 类型:'POST', url: '?action=someAction&target=someTarget', 成功:功能(响应){ 尝试 { var 订单 = 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>

【问题讨论】:

  • 需要查看完整的 ajax 选项。
  • 这也取决于你的 xml 的结构。你也能显示xml吗
  • 我编辑了最初的帖子以包含 ajax 选项和示例 xml

标签: jquery html xml ajax meta-tags


【解决方案1】:

我认为你不需要 .parent(),你可能需要在函数内部拉出 URL 属性。

编辑: 从 cmets 中获取更多实验空间:

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

前一个警报显示内容,后一个警报显示nullJquery selector for <link> elements in <head> 似乎在接受的答案中有一个优雅的答案:

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

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

【讨论】:

  • 我删除了父级,但它仍然不起作用。 URL 没有意义,但即使我尝试将其作为属性读取,它也是未定义的。
  • 哇,这很奇怪。我将 html 节点重命名为 html,它就像一个魅力。但是当它被命名为 html 时, .find() 没有得到它。那是一些优雅怪异的巫术。
  • 那么你认为jQuery不能解析这部分数据或者在上面使用任何选择器吗?任何可能的解决方法?
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
相关资源
最近更新 更多