我有这个非常简单的登录表单,包含用户和pass,我需要检查两者是否在数据库中,并且我正在使用ajax:
$("#clientes").bind("submit", function() {
$(".error_usu").hide();
$.ajax({
type : "POST",
cache : false,
url : "login.php",
data : $(this).serializeArray(),
success: function(data) {
switch(data){
case '1'://exito
alert("alert!");
window.location.href = "clientes.php";
break;
case '2'://pass
$(".error_pass").show();
break;
}
}
});
return false;
});
在login.php里面我有这个:
<? session_start();
if(!empty($_POST['usuario']) && !empty($_POST['password']))
{
include "funciones.php";
$username = $_POST['usuario'];
$password = $_POST['password'];
$con=conectar();
$checklogin = mysql_query("SELECT * FROM clientes WHERE user = '".$username."' AND pass = '".$password."'",$con) or die (mysql_error());
if(mysql_num_rows($checklogin) == 1){
$_SESSION['usuario'] = $_POST['usuario'];
$_SESSION['password'] = $_POST['password'];
echo '1';
}else{
echo '2';
}
}else{
echo '2';
}?>
当我用萤火虫检查时,我看到我得到了1或2但是de success功能永远不会起作用!我尝试过这个之前,我在数据库中只是在login.php中检查这个方式并且它有效:
if($_POST['usuario']=="fulano" && $_POST['password']=="fulano"){
echo '1';
}
由于$ _SESSION变量,它无法正常工作吗?我不完全理解ajax函数是如何工作的。
答案 0 :(得分:3)
如果没有输入switch语句,你可以将响应乘以1,然后JavaScript将其设为数字而不是文本。
success: function(data) {
data *= 1;
switch(data){
或
success: function(data) {
data = parseInt(data);
switch(data){
答案 1 :(得分:2)
您是否尝试指定要使用的正确数据类型?
例如:
type: "POST",
dataType: "text",
只是为了确保你可以添加:
error: function(err){alert("Errror:"+err.toString());},
并查看是否返回错误,如果是,则错误字符串是什么。
如果你的成功方法被击中,你也可以试试这个:
success: function(data) {alert(data==1); alert(data=='1'); }
答案 2 :(得分:2)
您可以尝试通过在ajax调用中实现错误处理程序来捕获响应。您还可以尝试设置您希望接收的dataType。它看起来像这样:
en$.ajax({
type : "POST",
cache : false,
url : "login.php",
data : $(this).serializeArray(),
dataType : "text",
error : function(jqXHR, textStatus, errorThrown) {
//Look at the values of jqXHR, textStatus, errorThrown
},
success: function(data) {
switch(data){
case '1'://exito
alert("alert!");
window.location.href = "clientes.php";
break;
case '2'://pass
$(".error_pass").show();
break;
}
}
});