jQuery函数与Ajax返回undefined

时间:2013-07-06 19:09:47

标签: jquery ajax post undefined

我有一个使用Ajax的jQuery函数。它总是返回undefined,我可以找出原因。

我注意到,如果我警告$.post功能中注册的变量,它会起作用,但如果我在外面尝试它则不会。

function signup(){

    var username = $('#su-username').val();
    var password = $('#su-password').val();

    if(username!='' && password!=''){

        $.post("register.php", { user: username, pass: password }).done(function(response){

            if($.trim(response)=='1'){
                alert('Username Taken, Please choose another');
                var registered = 0;
            }else{
                var registered = 1;
            }

        });

    } else {

        alert('Username and password cannot be empty');
        var registered = 0;
    }
    return registered;
}

2 个答案:

答案 0 :(得分:3)

当你处理像AJAX这样的异步操作时,建议使用回调函数。例如:

function signup(callback) {

    var username = $('#su-username').val(),
        password = $('#su-password').val(),
        registered = 0;

    if (username != '' && password != '') {

        $.post("register.php", { user: username, pass: password }).done(function(response) {
            if ($.trim(response) == '1') {
                alert('Username Taken, Please choose another');
            }
            else {
                registered = 1;
            }

            // Delayed callback invocation after AJAX request
            callback(registered);
        });
    }
    else {
        alert('Username and password cannot be empty');
        callback(registered); // Immediate invocation of the callback function
    }
}

signup(function(ok) {
    if (ok) alert('Ok!');
    else alert('Not ok!');
});

答案 1 :(得分:2)

在代码完成运行之前,您正在警告变量。使用on success success函数而不是AJAX调用,当返回值时,您可以使用它。

目前,您还没有等待AJAX​​调用完成,您继续使用代码,这就是您未定义的原因