我正在使用 ajax 创建登录页面。当用户名和密码错误时,它应该显示错误,当密码正确时,它应该重定向到另一个页面。但是在这两种情况下,都会调用成功函数。
<script>
$(document).ready(function()
{
$("#simple-post").click(function()
{
$("#ajaxform").submit(function(e)
{
$("#simple-msg").html("<img src='loading.gif'/>");
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
$.ajax(
{
url : formURL,
type: "POST",
data : postData,
success:function(data, textStatus, jqXHR)
{
alert(data.status);
$("#simple-msg").html('<pre><code class="prettyprint">'+data+'</code></pre>');
},
error: function(jqXHR, textStatus, errorThrown)
{
$("#simple-msg").html('<pre><code class="prettyprint">AJAX Request Failed<br/> textStatus='+textStatus+', errorThrown='+errorThrown+'</code></pre>');
}
});
e.preventDefault(); //STOP default action
});
$("#ajaxform").submit(); //SUBMIT FORM
});
});
</script>
这是 php
<?php
ob_start();
include 'CUserDB.php';
session_start();
include 'config.php';
$myusername=$_POST['txtusername'];
$mypassword=$_POST['txtpassword'];
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword=mysql_real_escape_string($mypassword);
$qry = "SELECT UserName,Type_user FROM login WHERE UserName = '".$myusername."' AND password = '".$mypassword."' ";
$result = mysql_query($qry) or die ("Query failed");
$UserData = mysql_fetch_array($result);
if($UserData['UserName'] != '')
{
session_start();
$_SESSION['UserId'] = $myusername;
$typ = $UserData['Type_user'];
if ( $typ == "Dealer")
{
header('location:Dealer/EditLoginDetails.php');
}
else if ($typ == "Individual")
{
header('location:/Dealer/EditLoginDetails.php');
}
else
{
header('location:/Builder/managep.php');
}
}
else
{
echo " wrong username or password";
}
?>
如果不成功,我想显示错误的用户名 pass..请问我是 ajax 的新手,该怎么做
最佳答案
请大家对jquery.Ajax的成功回调有一个清晰的认识。文档说:请求成功时调用的函数。
在您的情况下,如果输入的用户名和密码错误,则请求成功。
为了使其正常工作,请将这部分的php代码更改为:
$redirect = '';
if($UserData['UserName'] != '')
{
session_start();
$error = 0;
$message = 'Valid';
$_SESSION['UserId'] = $myusername;
$typ = $UserData['Type_user'];
if($typ == "Dealer")
{
$redirect = 'Dealer/EditLoginDetails.php';
}
else if($typ == "Individual")
{
$redirect = '/Dealer/EditLoginDetails.php';
}
else
{
$redirect = '/Builder/managep.php';
}
}
else
{
$error = 1;
$message = 'Invalid username or password';
}
echo json_encode(array('error' => $error, 'message' => $message, 'redirect' => $redirect));
和 jquery 代码,
$.ajax({
url : formURL,
type: "POST",
data : postData,
dataType:'json',
success:function(data, textStatus, jqXHR) {
if(data.error == 1) {
$("#simple-msg").html('<pre><code class="prettyprint">'+data.message+'</code>< /pre>');
} else {
window.location = data.redirect;
}
}
});
关于php - 将 mysql echo 作为 ajax 中的错误返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20113910/