【问题标题】:Why a jqueryAjax callback function doesn't need to be invoked?为什么不需要调用 jqueryAjax 回调函数?
【发布时间】:2018-01-03 04:52:05
【问题描述】:

我被教导说,一个带参数的函数只有在我传递参数时才能被调用,但最近我进入了这个 Jquery-Ajax 事情,事情看起来有点不同。教程中的一个示例是这样做的:

$("#div1").load("demo_test.txt", function(responseTxt, statusTxt, xhr) {
  if (statusTxt == "success")
    alert("External content loaded successfully!");

  if (statusTxt == "error")
    alert("Error: " + xhr.status + ": " + xhr.statusText);
});

注意到带有三个参数的函数了吗?是的,那个。令人困惑的是,它的参数显然是从无处传递/映射的,但它已在 IF 和 alert 中使用,并且可以正常工作。如何 ?我是说怎么做?

【问题讨论】:

  • 它们是从load 函数传递过来的。 loadcallback(responseTxt, statusTxt, xhr) 之类的结尾,其中 callback 是您在上面定义的函数。这是一个简单的回调示例:jsfiddle.net/5gu37wo7
  • 如果你检查 jQuery 源代码,你可以看到函数是从哪里调用的:j11y.io/jquery/#v=1.11.2&fn=jQuery.fn.load。对于那些懒得点击的人来说,它是 AJAX 请求的 complete 处理程序:)

标签: javascript jquery html ajax web-frontend


【解决方案1】:

您的第一个假设是错误的,如mentioned here

  • JavaScript 函数不对参数值(参数)进行任何检查。

  • JavaScript 函数不检查接收到的参数数量。

因此,回调将使用 1、2 或 3 个参数(甚至可以为 0)调用。

当调用完成时,JQuery load method 将调用您的回调。

【讨论】:

    【解决方案2】:

    不幸的是,这是不对的, 在 JavaScript 中,您可以调用等待参数而不发送任何参数的函数:

    function sum(x, y) {
      alert(x + y);
    }
    
    sum();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 2017-03-29
      • 2021-11-06
      相关资源
      最近更新 更多