将mysql echo作为错误返回给ajax

时间:2013-11-21 06:23:36

标签: 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";


    }

?>

我想显示错误的用户名传递,如果不成功..如何做到这一点请我是新的ajax

3 个答案:

答案 0 :(得分:2)

请清楚了解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;
        }
    }
});

答案 1 :(得分:1)

What HTTP status codes count as success in jQuery.ajax?表示以下代码对AJAX响应成功:

  

状态&gt; = 200&amp;&amp;状态&lt; 300 ||状态=== 304

所以你可以设置错误标题:

header('HTTP/1.0 403 Forbidden');
echo " wrong username or password";

答案 2 :(得分:0)

 success:function(data, textStatus, jqXHR)  {
     if(data== "error message"){
            //display error here
      } else{
       $("#simple-msg").html('<pre><code class="prettyprint">'+data+'</code>< /pre>');
      }
  },

错误信息可能像错误/成功等。

success: function(data) {
  if(data.status == 'success')
      alert("Thank you for subscribing!");
  else if(data.status == 'error')
      alert("Error on query!");
}