2013-07-11 94 views
0

我有一个登录表单在php中。我已经使用ajaxform,以便在用户名或密码错误时不会重新加载页面。我有另一个页面checklogin.php,它检查用户名和密码是否在数据库中,并返回行数。我想比较login.php中的计数,并在count = 1时显示错误消息,如果count = 2,则显示错误消息并重定向到另一个页面。我尝试使用target来显示errordiv中的计数:'errordiv'并检查其innerHTML,但未能这样做。从ajax表格返回值

我的login.php

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script> 
    <script type="text/javascript" src="scripts/jquery.form.js"></script> 
<!--Slider-in icons--> 
<script type="text/javascript"> 


    function checklogin() 
    { 
    var request=$("#login-form").ajaxForm(
        { 

        target:'#errordiv' 

        }).abort(); 
       request.submit(); 
     var divmsg=document.getElementById("errordiv"); 
     if (divmsg.childNodes[0].nodeValue == "1") 
      { 
     divmsg.childNodesp[0].nodeValue="Sorry"; 
     alert ("Invalid username or password");} //I didn't get the alert as well a the divmsg content didn't change 


        }; 
</script> 

</head> 
<body> 

<!--WRAPPER--> 
<div id="wrapper"> 

<!--LOGIN FORM--> 
<form name="login-form" id="login-form" class="login-form" action="checklogin.php" method="post"> 


    <!--CONTENT--> 
    <div class="content"> 
    <!--USERNAME--><input name="un" type="text" class="input username" placeholder="Username" onfocus="this.value=''" required="required" /><!--END USERNAME--> 
    <!--PASSWORD--><input name="pw" type="password" class="input password" placeholder="Password" onfocus="this.value=''" required="required" /><!--END PASSWORD--> 
    </div> 
    <!--END CONTENT--> 

    <!--FOOTER--> 
    <div class="footer"> 
    <!--LOGIN BUTTON--><input type="submit" name="submit" value="Login" class="button" onclick="checklogin()" /><!--END LOGIN BUTTON--> 

    </div> 
    <!--END FOOTER--> 

</form> 
<div id="errordiv" class="errordiv"></div> 
<!--END LOGIN FORM--> 

checklogin.php

<?php 

include ('dbconn.php'); 
     $user = trim($_POST['un']); 
     $pass = trim($_POST['pw']); 
     $user = mysql_real_escape_string($user); 
     $pass = mysql_real_escape_string($pass); 
     $result=mysql_query("select Id from login where Username='$user' and Password='$pass'") or die (mysql_error()); 
     $result= mysql_fetch_assoc($result); 
    $num= count ($result); 
    echo $num; 
?> 

我怎样才能获得的login.php $ num的值没有它显示一个DIV和比较$的价值num并相应地在errordiv中显示errormsg,或者如果$ num == 2重定向到另一个页面。

+0

您处理程序代码应移至成功回调。 – Orangepill

+0

可能重复的[如何从AJAX调用返回响应?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – elclanrs

+0

正在使用ajax调用和ajax形式相同? – user1583647

回答

1

更改您的代码,包括更改div和提供警报被列入回调的代码。

 var request=$("#login-form").ajaxForm(
       { 
        target:'#errordiv', 
        success: function (html) { 
         if ($("#errordiv).html() == "1") { 
          $("#errordiv).html("Sorry"); 
          alert ("Invalid username or password"); 
         } 
        } 
        }).abort(); 
       request.submit(); 
+0

不工作它将页面重定向到checklogin.php并显示1 – user1583647

0

也许尝试使异步检查要求和处理用户反馈在AJAX回调:

JS:

$(function(){ 
     $("#login-form").ajaxForm(function(response){ 
      if(response.count===1){ 
       $("#errordiv").html("msg you want to show"); 
      }else if(response.count===2){ 
       //redirect 
      } 
     }); 
    }); 

PHP:

<?php 
    header("Content-Type: application/json"); 

    //your database check logic 
    $user = trim($_POST['un']); 
    $pass = trim($_POST['pw']); 
    $user = mysql_real_escape_string($user); 
    $pass = mysql_real_escape_string($pass); 
    $result=mysql_query("select Id from login where Username='$user' and Password='$pass'") or die (mysql_error()); 
    $result= mysql_fetch_assoc($result); 
    $num= count ($result); 

    //and return response in JSON 
    echo json_encode(array("count"=>$num)); 

>

希望这对你有帮助。

[编辑]

删除表单提交按钮内嵌JS函数调用:

onclick="checklogin()" 

,并把checklogin功能逻辑记录准备回调,初始化表单当DOM准备

+0

没有工作。它将页面重定向到checklogin.php并显示{“count”:1} – user1583647

+0

已更新的答案。 – Chickenrice

+0

它仍然被重定向到checklogin.php – user1583647