2016-02-21 39 views
1

我有两个单独的Ajax教程在线,以尝试使我的登录表单在有错误消息时不会重定向到另一个页面。但是,这两种方法似乎都不起作用,我的表单仍然指向另一个页面并在那里显示错误消息。我不明白问题是什么,因为我几乎直接跟着教程,它对他们有效,但对我来说却不起作用。 下面是我的表单代码:Ajax php登录表单不能直接到另一个页面

<form id= "login_form" action="login.php" method="post"> 
      <span id="login_errors"></span> 
      <label>Email Address</label> 
      <input type="text" name="email" id="email" required="required"/> 
     <br /> 

     <label>Password</label> 
     <input type="password" name="password" id="password" required="required"/> 
     <br /> 

     <div class="checkbox"> 
     <input id="remember" type="checkbox" /> 
     <label for="remember">Keep me signed in</label> 
     </div> 

     <div class="action_btns"> 
     <div class="one_half last"><input type="submit" class="btn btn-blue" id="login_button" value="Login"></div> 
     <div class="one_half last"><a href="#" id="register_form" class="btn">Sign up</a></div> 
     </div> 
</form> 

这里是基于我follwed教程的一个Ajax代码:

$("#login_button").click(function(){ 

$.post($("#login_form").attr("action"), $("#login_form:input").serializeArray(), function(info){$("#login_errors").html(info);}); 
}); 

$("login_form").submit(function(){ 
    return false; 
}); 

这里为其他教程中的代码,也没”将不起作用:

$("#login_button").click(function(){ 
var action = $("#login_form").attr("action"); 
var form_data = { 
    email: $("#email").val(), 
    password: $("#password").val(), 
    is_ajax: 1 
}; 
$.ajax({ 
    type:"POST", 
    url:"action", 
    data: form_data, 
    success: function(response){ 
     if(response == 'success'){ 
      $("#login_errors").html("successful!"); 
     }else{ 
      $("#login_errors").html("unsuccessful!"); 
     } 

    } 
}); 
}); 

我已经包括jQuery的在我的网页的顶部:

<script type="text/javascript" src="jquery-1.11.0.min.js"></script> 

也链接我的ajax文件也在页面的顶部。

<script type="text/javascript" src="login_Ajax.js"></script> 

回答

1

有第二Ajax代码一个错字:url参数应该不是URL:“行动”,是这样的:

url: action, 

没有引号,因为它指的是声明的变量上面几行。 不知道这是否解决了您的问题,但要看到整个图片,您还应该显示您的“login.php”。

1

你似乎忘记了把#

$("#login_form").submit(function(){ 
    return false; 
}); 

为第二你们好像第一代码已经进入无效网址

url:"action" 

应该从你的HTML被jugging

url:"login.php" 
1

您的问题的完整解决方案:由于您正在关注导师因为你是在关注不同的教程和混合代码,所以让我给你一个简单而又简单的教程。

不要忘记顶部的jQuery库例如

<script type="text/javascript" src="jquery-1.11.0.min.js"></script> 
    <script> 

所以这个复制到页面e.g的login.php页面

<script type="text/javascript" src="jquery-1.11.0.min.js"></script> 
<script> 
$(function(){ 


    $(document).on("click", ".ylogButton", function(e) { 
    e.preventDefault(); 

//validate 
var email = $("#inputEmail").val(); 
var password = $("#inputPassword").val(); 
var emailp = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; 

if (email=='') 
{ 
    alert("Please enter your login email"); 
} 

else if (password=='') 
{ 
    alert("Please enter password"); 

} 
else { 
     //Built a url to send 
     var info = $("#yloginform").serialize(); 

     $.ajax({ 

      type: "POST", 
      url: "authenticate.php", 
      data: info, 
      success: function(result){ 
      $("#loginmsg").html(result); 
       //$("#form")[0].reset();  
      } 
     }); 
       e.preventDefault(); 

     } 
    }); 

}); 

</script> 

<div id="loginmsg"></div> 

<form class="form-signin" id="yloginform"> 
     <h2 style="text-align:center;"> sign in </h2> 
     <label for="inputEmail" class="sr-only">Login username</label> 

     <input type="text" id="inputEmail" name="email" class="form-control" placeholder="login email" required autofocus> 

     <label for="inputPassword" class="sr-only">Password</label> 

     <input type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" required> 

     <button class="ylogButton" type="submit">Sign in</button> 
</form> 

然后打开名为身份验证另一个文件。PHP和复制此登录PHP代码

<?php 
//connection to db 
$hostname_localhost = "localhost"; 
$database_localhost = "dbname"; //db name 
$username_localhost = "root"; 
$password_localhost = ""; //db password if any 
$localhost = mysql_pconnect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR); 

?> 
<?php 
if (!function_exists("GetSQLValueString")) { 
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{ 
    if (PHP_VERSION < 6) { 
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; 
    } 

    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 

    switch ($theType) { 
    case "text": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break;  
    case "long": 
    case "int": 
     $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
     break; 
    case "double": 
     $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; 
     break; 
    case "date": 
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
     break; 
    case "defined": 
     $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
     break; 
    } 
    return $theValue; 
} 
} 
?> 
<?php 

if (isset($_POST["email"])) { 

$email = $_POST['email']; 
$password = $_POST['password'];    

} 

//login registered user, but we always assume session has not been started 
if (!isset($_SESSION)) { 
    session_start(); 
} 


//this is just some magic 
$loginFormAction = $_SERVER['PHP_SELF']; 
if (isset($_GET['accesscheck'])) { 
    $_SESSION['PrevUrl'] = $_GET['accesscheck']; 
} 

if (isset($_POST['email'])) { 
    $loginUsername=$_POST['email']; 
    $password=$_POST['password']; 
    $MM_fldUserAuthorization = "userlevel"; 
    $MM_redirectLoginSuccess = "$return_url"; 
    $MM_redirectLoginFailed = "$return_url"; 
    $MM_redirecttoReferrer = false; 
    mysql_select_db($database_localhost, $localhost); 

    $LoginRS__query=sprintf("SELECT email, password, userlevel FROM users WHERE email='$loginUsername' AND password='$password'"); 

    $LoginRS = mysql_query($LoginRS__query, $localhost) or die(mysql_error()); 
    $loginFoundUser = mysql_num_rows($LoginRS); 
    if ($loginFoundUser) { 

    $loginStrGroup = mysql_result($LoginRS,0,'userlevel'); 

    if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();} 
    //declare two session variables and assign them 
    $_SESSION['MM_Username_check'] = $loginUsername; 
    $_SESSION['MM_UserGroup'] = $loginStrGroup;  

    if (isset($_SESSION['PrevUrl']) && false) { 
     $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; 
    } 

    echo "welcome, $lastname "; 
    $redirectpage = "sucesspage.php"; 
    echo "<script>window.location.href='$redirectpage';</script>"; 

    } 
    else { 
    echo "wrong username or password"; 
    } 
} 
    else 
    { 
     $text = "Error! Please try again."; 
    } 

?> 

在你的数据库然后确保你有

  1. 电子邮件密码用户级

将上面的代码生成会话变量<?php $_SESSION['MM_Username_check'] ?>,这将是记录的电子邮件在用户中。

而且当您的登录成功时,您将被重定向到successpage.php

相关问题