2013-07-11 3 views
0

나는 PHP에서 로그인 폼을 가지고있다. 사용자 이름이나 암호가 잘못되었을 때 페이지가 다시로드되지 않도록 ajaxform을 사용했습니다. 나는 username과 pw가 데이터베이스에 있는지 검사하고 행 수를 반환하는 또 다른 checklogin.php 페이지가 있습니다. login.php의 수를 비교하고 count = 1이면 오류 메시지를 표시하고 count = 2이면 다른 페이지로 리디렉션하고 싶습니다. 나는 타겟을 사용하여 errordiv에 카운트를 표시하려고 시도했다. 'errordiv'와 innerHTML을 체크했지만 실패했다.아약스 양식의 반환 값

내 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에서 $ 인분의 값을 얻을 $의 값을 비교할 수있는 방법 그래서 errordiv에 errormsg를 표시하거나 $ num == 2가 다른 페이지로 리다이렉트하면.

+0

당신의 처리기 코드는 성공 콜백으로 이동해야합니다. – Orangepill

+0

가능한 [AJAX 호출에서 응답을 반환하는 방법?] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – elclanrs

+0

사용 중 아약스 호출과 아약스 양식은 같은 ?? – 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