在jquery ajax中返回true

时间:2014-06-21 21:43:52

标签: jquery ajax

我在jquery中使用ajax来检查数据库中是否存在该值。我们可以使用普通选择查询(php),但如果值存在,我必须进行警告弹出。这就是我决定这种方式的原因。我几乎完成了,但问题是由于在jquery中返回false,它不允许下一行,因为数据库中不存在名称。我怎样才能在那个特定的地方给予回报?

$.ajax({
    type:"post",
    url:"actionn.php",
    data:"name="+name,
    success:function(data){
        alert(data);        
        //if data does not exist means it should get out of ajax function            
    }
});
return false; //if data exists

if(name=="") //data does not exist means it should come here
{
    alert("Please enter your Name");
    return false;
}

3 个答案:

答案 0 :(得分:0)

刚刚把这个

返回false; //如果数据存在

在此

success:function(data){
   alert(data);        
   //if data does not exist means it should get out of ajax function     
   return false; //if data exists - //LIKE THIS
}

答案 1 :(得分:0)

您可以在成功函数中使用if条件,如:

success:function(data) { 
    if(data) { 
         alert(data); 
    }  
    else { 
         alert("Please enter your Name"); 
         return; 
     }     
 }

请参阅$.ajax

的文档

答案 2 :(得分:0)

正如t.niese在return true内指出success(或错误)并没有做你预期会做的事情。 (另见你问题下的第一条评论)。

实现目标的最直接的方法可能是在success内存在用户(不存在)时使用您拥有的任何代码。

所以基本上移动逻辑/代码当用户存在/ success回调中不存在时该做什么。
有关更多见解,您应该阅读评论中提供的一些链接

编辑:
我认为您错过了异步请求的概念 - 给出代码中的注释

$.ajax({
    type:"post",
    url:"actionn.php",
    data:"name="+name,
    success:function(data){
        alert(data);        
        //if data does not exist means it should get out of ajax function
        //ajax function has already "exited" here is the success callback
        //this code is executed when the request to action.php was succesfull
        //as in response code is 200/OK

    }
});
//return false; //if data exists
//nope, you don't know if data exists this code will be
//executed _while_ (!) a request to action.php is made!
//there is no guarantee when this request returns and you can't write code
//here which relies on the response

//if(name=="") //data does not exist means it should come here
//{
//    alert("Please enter your Name");
//    return false;
//}

你真正想写的是这样的:

$.ajax({
    type:"post",
    url:"actionn.php",
    data:"name="+name,
    success:function(data){
        if(name==""){
            alert("Please enter your Name");
        }else{
            alert("Your name is: "+data);
        }
    }
});

酥脆而短暂。所有依赖于服务器响应的逻辑都是在 success callack中处理 $.ajax之后没有代码,它以任何方式依赖于data

请不要return进入$.ajax.success - 这不是您认为的

有关进一步的问题,我想邀请您(再次)阅读有关Ajax调用的信息:https://stackoverflow.com/a/14220323/1063730我认为关于重组代码的段落对您来说非常有趣。