首页 > 解决方案 > jquery .load() 带来的数据比我要求的要多

问题描述

我正在为从 d1.test.com 到 d2.test.com 的菜单列表进行跨站点获取,并且它可以工作......但问题是它还会拉回我想要的元素之外的其他数据。因此,对于这种情况,我得到了<header>标签中的所有内容,但是$('#mainNav').load('https://d1.test.com header');(我已经在控制台中独立运行以确保)还从<header>标签之外的 d1 中提取了一些其他内容。

  1. 这是为什么?
  2. 如何<header>像我期望的那样只获取开始标签和结束标签之间的数据?

ETA:这是 d2 正在拉过来的 d1 上的 html(在评论中要求),加上 trasparent.gif 的位置,它不在标题标签内:

 <div class="auxnav">
    <div class="wrapper">
        <a href="#skip-to-content">
            <img src="/images/Transparent.gif" alt="Skip to content." width="1" height="1">
        </a>
        <ul id="AuxNavigation" class="CMSListMenuUL">
        </ul>
    </div>
</div>
<header role="heading">
    <div class="wrapper">
        <nav>
        menu items here
        </nav>
    </div>
</header>

标签: jquery

解决方案


它实际上并没有在外部加载元素<header>。它只是解析整个返回的 HTML,以便它可以选择您想要的嵌套元素。当其中有<img>元素时,这会触发尝试加载它们,如果图像不存在,这可能会导致控制台出错。

这确实会导致额外的网络开销,因此如果您可以重新组织服务器文件以将其拆分为更具体的文件,而无需周围的元素,那可能是最好的。但是现在您可以忽略图像中的 404 控制台错误。


推荐阅读