我试图从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));
}
答案 0 :(得分:5)
success
参数需要对AJAX请求完成时将调用的函数的引用。
以下内容:
success: exoticlangAjaxCompleted,
您正在根据需要传递对函数的引用。
在这种情况下:
success: exoticlangAjaxCompleted(),
您正在调用exoticlangAjaxCompleted
函数并将结果传递给success
参数。除非你的函数返回一个函数,否则这不起作用!
答案 1 :(得分:2)
前一种语法起作用的原因是因为success
需要一个函数对象(为了用参数调用它,如果它想要),只是调用一个函数不会返回一个函数对象。当您使用function()
形式调用函数时,它会生成输出(即使该输出未定义)这也是此表单有效的原因:
...
success: function() {
// Some callback code
}
...
那么,它们有何不同?为了说明如何,让我们看一下WebKit控制台:
如您所见,执行myFunc
会返回函数本身,而myFunc()
会返回**对select:
*无用的对象
答案 2 :(得分:0)
我的理解是你不能以这种方式传递论据。
如果您尝试这样做:
success: function(){exoticlangAjaxCompleted(messageLog);},
那可能会有用。
答案 3 :(得分:0)
在Jquery文档中,这是一个关于成功回调的部分:
“如果请求成功则调用的函数。函数获取 传递了三个参数:从服务器返回的数据,格式化 根据dataType参数;描述状态的字符串; 和jqXHR(在jQuery 1.4.x,XMLHttpRequest中)对象。“
所以你必须制作一个技巧,比如:Pattern of additional parameters
success: function(..){
...
}