我有一个Javascript函数,它使用jQuery Ajax从Servlet获取响应。当我使用匿名函数方法 -
时,它可以正常工作function doAjax() {
$.ajax({
url : 'Authentication',
data : { userName : 'poko' },
success : function(data){
alert(data); //this works
}
});
}
但是当我尝试将响应变量传递给声明的函数时,没有任何反应。
function doAjax() {
$.ajax({
url : 'Authentication',
data : { userName : 'poko' },
success : showResult(data) //this doesn't
});
}
function showResult(d) {
alert(d);
}
Firefox调试提供 ReferenceError:未定义数据。 我真的可以使用第二种方法吗?
答案 0 :(得分:2)
第二次尝试
function doAjax() {
$.ajax({
url : 'Authentication',
data : { userName : 'poko' },
success : showResult(data) //this doesn't
});
}
您实际上正在执行showResult
,然后将其结果分配给success
处理程序。 success
期望的是匿名函数或函数引用(不向其传递参数)。
你能做的是
function doAjax() {
$.ajax({
url : 'Authentication',
data : { userName : 'poko' },
success : showResult
});
}
并且data
将自动作为第一个参数传入所引用的函数。
答案 1 :(得分:1)
删除传入的参数,立即调用该函数!如果您正在传递该函数,则params将自动包含在:
中success : showResult
答案 2 :(得分:1)
您的问题是您将showResult的结果传递给成功而不是传递函数showResult。
这样做:
function doAjax() {
$.ajax({
url : 'Authentication',
data : { userName : 'poko' },
success : showResult
});
}
答案 3 :(得分:1)
通过showResult(data)
您实际上正在调用该函数。 成功需要功能,而不是函数调用。
所以它应该看起来像
function doAjax() {
$.ajax({
url : 'Authentication',
data : { userName : 'poko' },
success : showResult //Should work now.
});
}