使用ajax在html中将php echo作为错误返回

时间:2016-08-19 05:30:33

标签: php ajax

        <?php
        $username=strip_tags($_POST['username']);
        $password=strip_tags($_POST['password']);


        $username=stripslashes($username);
        $password=stripslashes($password);

        $username=mysqli_real_escape_string($dbc,$username);
        $password=mysqli_real_escape_string($dbc,$password);

        $password=md5($password);

        $sql="SELECT * FROM mobile_users WHERE username='$username' LIMIT 1 ";
        $query=mysqli_query($dbc, $sql);
        $row=mysqli_fetch_array($query);

        //$expire=time() +60*60*24*30;
        //setcookie("");


        //}



        $id=$row['idmobile_users'];

        $db_password=$row['password'];
          $_SESSION['error'] = "could not connect";

        if($password==$db_password){
        $_SESSION['username']=$username;
        $_SESSION['id']=$id;
        $_SESSION['last_time']=time();

        header("Location: apply_now.php");

        }
        else {


            echo 'Invalid username or password';

        }


        }

        ?>
    <script>
$(function(){
$(document).on("click", ".button", function(e) {
e.preventDefault();
{       
//This will capture all the inputs from the form
var infom = $("#myform").serialize();
        //$("#showresult").addClass('loader');                
        $.ajax({            
            beforeSend: function() { },         
            type: "POST",
            url: "login.php",
            data:infom,          
            success: function(result){      
            //$("#showresult").removeClass('loader');
            $('#showresult').html(result);
            }
        });     
        e.preventDefault(); 
}
}); 
});
</script>

好吧所以我希望它从php代码中放置错误消息,其中id在html中,id在span标记中。尝试了很多方法,但似乎无法让它正常工作。我希望somone可以帮我解决这个问题。感谢

2 个答案:

答案 0 :(得分:1)

首先,Ajax代码无法理解来自php页面的响应是否是错误或成功响应,您只需返回响应,但在PHP页面中指定它是否是错误。

如果将php页面与html页面分开,那会更好。

这应该在您的 html页面中。

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.js"></script>
<script>
$(function(){
$(document).on("click", ".button", function(e) {
e.preventDefault();
{       
//This will capture all the inputs from the form
var infom = $("#myform").serialize();
        $("#showresult").addClass('loader');                
        $.ajax({            
            beforeSend: function() { },         
            type: "POST",
            url: "login.php",
            data:infom,          
            success: function(result){      
            $("#showresult").removeClass('loader');
            $('#showresult').html(result);
            }
        });     
        e.preventDefault(); 
}
}); 
});
</script>
    <style>
    .loader{
        background-image:url(http://loading.io/assets/img/default-loader.gif);
        background-repeat:no-repeat;
        background-position:center;
        height:100px;
        background-size: 30px;
    }
    </style>
<div id="showresult"></div>

<form id="myform">
<!--your inputs-->
<input name="username" type="text"><br>
<input name="password" type="text"><br>
<button class="button"> submit </button>
</form>

这是在 php页面

   <?php

    //YOUR PHP CODES....

    header("Location: apply_now.php");
    // i would prefer something like
    echo ' welcome '.$username.' '; 
    echo "<script> window.location.href='apply_now.php';</script>";

    }
    else {


        echo 'Invalid username or password';

    }
    echo json_encode(array('error' => $error, 'message' => $message, 'redirect' => $redirect));


    ?>

答案 1 :(得分:0)

我不明白你究竟是什么意思,但是当我看到这些代码时,你的页面是否只是令人耳目一新的提交?如果我不正确,如果您不使用e.preventDefault(),表单将重新加载提交页面。如果它正在重新加载,只包括防止默认值,其余的代码看起来没问题