2013-07-11 3 views
0

У меня есть форма входа в php. Я использовал ajaxform, чтобы страница не перезагружалась, когда имя пользователя или пароль ошибочны. У меня есть еще одна страница checklogin.php, которая проверяет наличие имени пользователя и pw в базе данных и возвращает количество строк. Я хочу сравнить счет в login.php и отобразить сообщение об ошибке, если count = 1 и перенаправить на другую страницу, если count = 2. Я попытался отобразить счетчик в неправильном использовании цели: «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; 
?> 

Как я могу получить значение $ NUM в login.php без отображения его в DIV и сравнить значение $ num и соответственно отображать errormsg в errordiv или если $ 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)); 

>

Надежда это полезно для вас.

[EDIT]

удалить подчиненную форму кнопки инлайн JS функции производит вызов:

onclick="checklogin()" 

и поставить checklogin функции логику для документирования готового обратного вызова, инициализировать форму, когда DOM готов

+0

Не работает. Он перенаправляет страницу на checklogin.php и отображает {"count": 1} – user1583647

+0

Обновленный ответ. – Chickenrice

+0

Он по-прежнему перенаправляется на checklogin.php – user1583647

Смежные вопросы