php - 将 mysql echo 作为 ajax 中的错误返回

标签 php jquery mysql ajax

我正在使用 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/

相关文章:

PHP 用数组中的字符串替换字符

mysql - Codeigniter,Active Record 不接受 WEEK 参数

java - 检查器显示 3 秒更新,如何获取新值?

php - 从 PHP 中的动态表单向数据库添加行

php - Predis。如何设置西里尔字母键?

javascript - 判断 jQuery DOM 元素是否可拖动

javascript - bootstrap-table 中的 table-multiple-sort 不适用于一页中的多个表

javascript - 如何使用 jQuery/JavaScript 仅在特定页面上将 h3 更改为 h2

mysql - 出租车司机队列管理MySQL查询

mysql - 在 sql 触发器中运行存储过程