为什么jQuery .done()不能识别外部函数

时间:2018-10-23 18:59:55

标签: jquery deferred

我有这样的东西:

  //works fine
  $.ajax("info.txt")
    .done(function(data) {
      console.log("works");
    })

我也有这样的东西:

  //throws an error, stating CheckIt() inside the .done() is not a function
  $.ajax("info.txt")
    .done(function(data) {
      CheckIt(data);
    });

  function CheckIt(da) {
    console.log("it works");
  }

为什么我会收到错误消息,如何避免该错误,使我可以使用其他功能。

1 个答案:

答案 0 :(得分:1)

您的ajax请求很可能失败。如果将“ with”替换为“ always”,即使请求失败,也会始终调用它。

$.ajax("https://cat-fact.herokuapp.com/facts/random")
  .always(function(data) {
    CheckIt(data);
  });

function CheckIt(da) {
  alert("it works");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>