jQuery .load() 失败

Posted

技术标签:

【中文标题】jQuery .load() 失败【英文标题】:jQuery .load() failure 【发布时间】:2018-02-09 00:14:36 【问题描述】:

我正在尝试运行在以下链接中找到的答案: Asynchronously Load the Contents of a Div

但是当我这样做时,我会得到我不太理解的错误。

我的代码:

$(document).ready(function() 
  $("#first").load(function() 
    $("body").append($("<div></div>").attr(
      id: "second"
    ).text("Second"));
    $("#second").load(function() 
      $("body").append($("<div></div>").attr(
        id: "third"
      ).text("Third"));
    );
  );
);
<html>

<head>
  <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-
3.2.1.min.js"></script>
</head>

<body>
  <div id="#first">First</div>
</body>

</html>

我从 Chrome 返回的错误很广泛。但这里是亮点:

Uncaught TypeError: a.indexOf is not a function
    at r.fn.init.r.fn.load (jquery-3.2.1.min.js:4)
    at HTMLDocument.<anonymous> (temp.html:6)
    at j (jquery-3.2.1.min.js:2)
    at k (jquery-3.2.1.min.js:2)

有什么想法吗?

【问题讨论】:

"Uncaught TypeError: a.indexOf is not a function" error when opening new foundation project的可能重复 $("#first") 不等于 &lt;div class="#first"&gt; &lt;div&gt; 没有 load 事件。只有从外部资源中填充的元素,例如 &lt;img&gt;&lt;script&gt; 才会触发 load 事件。 【参考方案1】:

您的第一个问题已通过以下方式解决:

$("#first").on('load', function() 
  *code to be executed*

.load 自 jQuery 1.8 起已被弃用

您提到的第二个问题是只创建了第一个 div,因为您在加载第二个 div 时尝试执行下一个函数来创建第三个 div,但实际上第二个 div 没有加载,因为您正在附加它所以在这种情况下没有负载发生。

您可以一个接一个地附加,假设您正在尝试这样做,它们将按顺序显示。

【讨论】:

【参考方案2】:

此错误可能是由 jquery 事件别名引起的,例如 .error.load.unload。自 jQuery 1.8 以来,这些已被弃用。您需要将它们替换为 .on() 来注册侦听器。示例:

$(window).load(function()
  ...
);

变成:

$(window).on('load', function()
 ...
);

所以尝试使用.on()

【讨论】:

谢谢!错误消失了,但只出现了第一个“第一个”div。未创建其他 div。

以上是关于jQuery .load() 失败的主要内容,如果未能解决你的问题,请参考以下文章

history.pushState URL与jquery的交互导致页面获取失败?

Jquery 中load方法使用!

Jquery .load() 在 Django 模板中不起作用

使用 nltk.data.load 加载english.pickle 失败

为啥 YAML.safe_load 在 YAML 别名上失败?

MySql LOAD DATA INFILE 以逗号失败