如何在$ .ajax之外调用变量?

时间:2010-09-05 10:35:42

标签: jquery forms hide

我试图在Jquery中调用链函数。我在Jquery提交函数中使用$ .ajax从login.php获取值,我试图调用fadeOut函数来关闭登录表单。如果登录成功表单将关闭,那么将有一些成功消息,然后它将关闭。如果错误,那么表格将保留,也是错误信息。 我做了它,但在我的login.js中,当我调用$('。loginform')。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>

1 个答案:

答案 0 :(得分: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
}