2010-09-05 27 views
2

我想在JQuery中调用链函数的条件。我在jquery中使用$ .ajax提交函数以从login.php获取值,并试图调用fadeOut函数关闭登录表单。如果登录成功的形式将关闭,那么会有一些成功的消息,然后它将会关闭。如果错误然后形式将保持并且也是错误消息。 当我调用$('。loginform')时,我做了它,但在我的login.js中。fadeOut(1000)它也可以工作,如果登录成功或不成功。

jQuery('#login').live('submit',function(event) { 

$.ajax({ 
    url: 'lib/login.php', 
    type: 'POST', 
    dataType: 'json', 
    data: $('#login').serialize(), 
    success: function(data) { 

     for(var id in data) { 
      jQuery('.' + id).html(data[id]);  
     } 
$('.loginform').hide(1000);  

    } 
}); 

return false; 
} 

});

和我的login.php文件包括

if(result==1){ 
    $arr = array ("loginOK" => "Success."); 

} else { 

$arr = array ("errors" => "Please try again ."); 

} 
echo json_encode($arr); 

这是index.html的

<!--Login Form tag --> 

<div class='errors'></div> 

<div class='loginOK'></div> 

<div class='loginform'> 

    <form action ="" method="post" id="login"> 
    <fieldset class="loginfield"> 
     <legend>Login</legend> 
     <div> 
      <label for="username">User Name</label> <input type="text" id="username" name="username"> 
     </div> 
     <div> 
      <label for="password">Password</label> <input type="password" id="password" name="password"> 
     </div> 
    </fieldset> 
     <button type="submit" id="submit-go" ></button> 
<a href="#?w=500" rel="popup_name" class="poplight">Sing up</a> 

</form> 

</div> 
+0

为什么使用''''和'jQuery'为了保持一致性,我只使用其中的一个,因为'$'是'jQuery'的别名,如果使用'$',我只使用'jQuery'别的东西。 – jigfox 2010-09-05 12:38:33

回答

2

success: function(data) {处理程序时请求成功,而不是在登录成功执行。您需要在您的json提供一个标志来表明,并检查其标记在您的处理程序:

success: function(data) { 

    if(data.success) { 
     for(var id in data) { 
      jQuery('.' + id).html(data[id]);  
     } 
     $('.loginform').hide(1000); 

    } else { 
     alert('Error logging in'); 
    } 

} 

编辑:

您当前的JSON对象是像

{ 
    id_1:'html_1', 
    id_2:'html_2' 
} 

你应该使它像

{ 
    html: { 
    id_1: 'html_1', 
    id_2: 'html_2' 
    }, 
    success: $login_success 
} 
+0

这个标志必须在$ .ajax中? – Ercan 2010-09-05 11:02:04

+0

是json对象将会像$ flag = true;并在jqury if(flag){$('。loginform')。hide(1000);} else {alert('Error logging in');} ??? – Ercan 2010-09-05 12:11:24

+0

我编辑了答案,检查它。 – aularon 2010-09-05 12:31:59