jQuery.ajax函数不从它返回参数

时间:2013-03-05 09:07:22

标签: jquery

如果用户存在,我需要我的函数返回FALSE,如果数据库中不存在用户,则需要TRUE。 这是我的功能代码。 Firebug向我展示变量标志始终未定义。我该如何解决?

function checkLogin(login, n) { 
        var flag;

        jQuery.ajax({
            type: "POST",
            url: "${pageContext.request.contextPath}/checkLogin.ajax",
            data: "login="+login.val(), 

            success: function(response){
                if (response.status == "EMPTY") {
                    alert('Login is free - you can take it');
                    flag = true;
                } 

                if (response.status == "EXISTS") {              
                    alert('Login already exists in Database');
                    login.addClass( "ui-state-error" );
                    updateTips( n );
                    flag = false;
                }

            }
        });

        return flag;
    }

4 个答案:

答案 0 :(得分:0)

AJAX是异步的。您的return语句将在更改标志的回调代码完成之前发生。您需要更改逻辑,以便函数不返回标志,而是将其传递给您定义的回调。

答案 1 :(得分:0)

有几个问题:

  • ajax将异步工作,因此在您返回等待设置的值之前,您无法确定它是否会完成(因此设置了标志);
  • 并且,您没有为error参数指定处理程序,因此如果出现问题,您将无法了解它。

答案 2 :(得分:0)

你不能归还旗帜.. 它将直接执行而不考虑你的ajax调用,因此在你的ajax调用正在进行之前,它将在ajax操作完成之前返回标志。 它不会起作用

您可以获取$ .deferred的帮助

<强> look at it

答案 3 :(得分:-1)

尝试将数据发布为data: "login:"+login.val(),

使用:而不是=

并尝试使用'“+ +”'

发布数据