如何将.post()的响应值返回到我的函数中?

时间:2011-11-30 23:07:14

标签: jquery ajax scope

我有一些javascript验证,我检查(除其他事项外)是否收到了电子邮件,但我无法让它工作。

function validateField(input) {

    errors = false;
    messages = ''; //

    /*  Begin checks */

    if (input.hasClass('jEmailUnique')) {

        message = 'Email not taken';

        $.post('../ajax/j_validate.php', {

            step: 1,
            email: input.val()
        }, function(response){

            if (response != '0') {

                message = tipInvalid + message;

                errors = true;
            }
            else {

                message = tipValid + message;
            }

            messages += "<p>" + message + "</p>";
        });
    }

    /* End checks */

    if (errors == true) {

        input.addClass('jHasError').removeClass('jNoError');
    }
    else {

        input.addClass('jNoError').removeClass('jHasError');
    }

    setTip(input, messages); // show pop up window with error messages
}

我是否在messages中的匿名函数中丢失了post的范围?

1 个答案:

答案 0 :(得分:1)

  

我的猜测是我在帖子中失去了匿名函数中的消息范围。我怎样才能通过这些?

你不是,但你仍然做错了。您的messages变量是全局变量。在它前面加上var以使其适应其功能。

您还需要在回调中致电setTip(input, messages),在此之前,messagesundefined