jQuery Ajax将响应变量传递给函数

时间:2015-05-29 18:53:18

标签: javascript jquery ajax

我有一个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:未定义数据。 我真的可以使用第二种方法吗?

4 个答案:

答案 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.
    });
}