2013-03-05 69 views
0

如果用户存在,我需要我的函数返回FALSE,如果用户在数据库中不存在,则返回TRUE。 这是我的功能代码。 Firebug告诉我变量标志一直保持不变。我该如何解决它?jQuery.ajax函数不返回参数

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; 
    } 
+1

上午在哪里azing这个问题出现方式太频繁了吗?我想书签 – 2013-03-05 09:09:23

+0

请参阅http://stackoverflow.com/questions/15155607/use-jquery-ajax-dont-have-callback-when-return-true/15156942#15156942 – Tapirboy 2013-03-05 09:11:59

回答

0

你不能返回标志.. 它会直接执行,而不考虑你的Ajax调用,因此,直到你的Ajax通话过程中,它会返回前旗完成AJAX操作。 它不会工作

你可以采取的.deferred $代替

look at it

0

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

0

两个问题:

  • ajax将异步工作,所以你不能肯定这将完成(因此设置标志)你返回你等待它来设置前值;
  • 而且,您没有为error参数指定处理程序,所以如果出现问题,那么您不会知道它。
-1

尝试张贴数据的帮助,data: "login:"+login.val(),

使用:代替=

,并尝试用'“+ +”发布数据''

+0

'name = value'是合适的语法为POST参数。 – 2013-03-05 09:14:47