2017-07-27 119 views
1

我已经被告知只有在传递参数时才能调用带有参数的函数,但最近我进入了这个Jquery-Ajax的东西,事情看起来有点不同。在教程中的一个例子是这样的:为什么jqueryAjax回调函数不需要被调用?

$("#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中,并且它可以工作。怎么样 ?我的意思是如何?

+1

它们正从'load'函数传递。 'load'以类似于'callback(responseTxt,statusTxt,xhr)''的地方结束,其中'callback'是你上面定义的函数。这里有一个简单的回调示例:https://jsfiddle.net/5gu37wo7/ – tymeJV

+1

如果您检查jQuery源代码,您可以看到函数从何处调用:https://j11y.io/jquery/#v=1.11.2&fn = jQuery.fn.load。它是那些懒得点击的AJAX请求的'complete'处理程序:) –

回答

0

很不幸,这是不对的, 在JavaScript中,你可以调用正在等待PARAMS不发送任何一个功能:

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

 
sum();

0

你的第一个假设是错误的,因为mentioned here

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

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

所以,回调将与1,2或3个参数被调用(或者它甚至可以是0)。

它是JQuery load method,当呼叫完成时,它会调用你的回调。

相关问题