使用参数调用javascript函数与不使用参数调用javascript函数有什么区别
我试图从一个ajax调用中获取数据,并使用了代码使用参数调用javascript函数与不使用参数调用javascript函数有什么区别,javascript,jquery,Javascript,Jquery,我试图从一个ajax调用中获取数据,并使用了代码 jQuery.ajax({ type: 'POST', url: '/chatlog', success: exoticlangAjaxCompleted, data:'messageLog=' + privateMessageLogJson, dataType: 'json' }); 数据位于JSON数组key=messageLog中 为什么打电话有效
jQuery.ajax({
type: 'POST',
url: '/chatlog',
success: exoticlangAjaxCompleted,
data:'messageLog=' + privateMessageLogJson,
dataType: 'json'
});
数据位于JSON数组key=messageLog中
为什么打电话有效
success: exoticlangAjaxCompleted,
但不是
success: exoticlangAjaxCompleted(),
或
JS功能是:
function exoticlangAjaxCompleted(messageLog){
console.log('exoticlangAjaxCompleted!');
console.log('chat log is: ' + messageLog);
console.log('chat log is: ' + dump(messageLog));
}
我的理解是你不能这样传递论点 如果您尝试这样做:
success: function(){exoticlangAjaxCompleted(messageLog);},
然后这可能会起作用。success参数需要对函数的引用,该函数将在AJAX请求完成时调用
以下是:
success: exoticlangAjaxCompleted,
您正在根据需要传递对函数的引用
鉴于在这种情况下:
success: exoticlangAjaxCompleted(),
您正在调用exoticlangAjaxCompleted函数并将结果传递给success参数。除非你的函数返回一个函数,否则这将不起作用 前面的语法之所以有效,是因为success需要一个函数对象,以便在需要时使用参数调用它,而仅仅调用函数不会返回函数对象。使用函数形式调用函数时,即使输出未定义,它也会生成输出这也是此形式工作的原因:
...
success: function() {
// Some callback code
}
...
那么,它们有什么不同呢?为了演示如何操作,让我们看看WebKit控制台:
如您所见,执行myFunc会返回函数本身,而myFunc会返回**一个无法选择的对象:从Jquery文档中,以下是关于成功回调的一节: 请求成功时要调用的函数。该函数得到 传递了三个参数:从服务器返回的数据,已格式化 根据数据类型参数;描述状态的字符串; 以及jQuery1.4.x中的jqXHR,XMLHttpRequest对象 所以你必须做一个小把戏,比如:
您正在替换事件处理程序。这必须通过函数或返回函数Yea的东西来完成。此外,默认情况下,每个JS函数都与一个同名变量相关联。这意味着如果你有函数abc{},那么你也有一个var abc,你可以用它来引用这个函数。在您的例子中,exoticlangAjaxCompleted引用了原始函数。感谢大家-我将对引用传递做更多的研究
...
success: function() {
// Some callback code
}
...
success: function(..){
...
}