调用javascript函数和参数之间的区别是什么?

时间:2012-08-24 05:43:11

标签: javascript jquery

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

jQuery.ajax({
        type: 'POST',
        url: '/chatlog',
        success: exoticlangAjaxCompleted,
        data:'messageLog=' + privateMessageLogJson,
        dataType: 'json'
    });

数据在JSON数组中(key =“messageLog”)

为什么打电话

    success: exoticlangAjaxCompleted,

但不是

    success: exoticlangAjaxCompleted(),

    success: exoticlangAjaxCompleted(messageLog) ??

JS功能是:

function exoticlangAjaxCompleted(messageLog){
    console.log('exoticlangAjaxCompleted!');
    console.log('chat log is: ' + messageLog);
    console.log('chat log is: ' + dump(messageLog));
}

4 个答案:

答案 0 :(得分:5)

success参数需要对AJAX请求完成时将调用的函数的引用。

以下内容:

success: exoticlangAjaxCompleted,

您正在根据需要传递对函数的引用。

在这种情况下:

success: exoticlangAjaxCompleted(),

您正在调用exoticlangAjaxCompleted函数并将结果传递给success参数。除非你的函数返回一个函数,否则这不起作用!

答案 1 :(得分:2)

前一种语法起作用的原因是因为success需要一个函数对象(为了用参数调用它,如果它想要),只是调用一个函数不会返回一个函数对象。当您使用function()形式调用函数时,它会生成输出(即使该输出未定义)这也是此表单有效的原因:

...
success: function() {
    // Some callback code
}
...

那么,它们有何不同?为了说明如何,让我们看一下WebKit控制台:

Image showing the WebKit console, myFunc vs myFunc()

如您所见,执行myFunc会返回函数本身,而myFunc()会返回**对select: *无用的对象

答案 2 :(得分:0)

我的理解是你不能以这种方式传递论据。

如果您尝试这样做:

success: function(){exoticlangAjaxCompleted(messageLog);},

那可能会有用。

答案 3 :(得分:0)

在Jquery文档中,这是一个关于成功回调的部分:

  

“如果请求成功则调用的函数。函数获取   传递了三个参数:从服务器返回的数据,格式化   根据dataType参数;描述状态的字符串;   和jqXHR(在jQuery 1.4.x,XMLHttpRequest中)对象。“

jQuery.ajax()

所以你必须制作一个技巧,比如:Pattern of additional parameters

success: function(..){
...
}