Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用参数调用javascript函数与不使用参数调用javascript函数有什么区别_Javascript_Jquery - Fatal编程技术网

使用参数调用javascript函数与不使用参数调用javascript函数有什么区别

使用参数调用javascript函数与不使用参数调用javascript函数有什么区别,javascript,jquery,Javascript,Jquery,我试图从一个ajax调用中获取数据,并使用了代码 jQuery.ajax({ type: 'POST', url: '/chatlog', success: exoticlangAjaxCompleted, data:'messageLog=' + privateMessageLogJson, dataType: 'json' }); 数据位于JSON数组key=messageLog中 为什么打电话有效

我试图从一个ajax调用中获取数据,并使用了代码

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(..){
...
}