将登录数据从ajax传递给php脚本

时间:2016-02-12 16:49:30

标签: javascript php jquery html ajax

这是我在html页面中的脚本:

<script>
    $(document).ready(function(){
        $('#form').on('submit',function(e){
            var loginid=$('#loginid').val();
            var password=$('#password').val();
            alert("loginid="+loginid);
            $.ajax({
                 type: "POST", 
                 url: "../controller/login_check.php",
                 data: {loginid:loginid,password:password},
                 success: function(html) {
                     //alert(html);
                     $('#status').html(html);
                 }
            });
        });
    });
</script>

我试图从html输入框中获取值,然后将这些值传递给ajax代码,该代码将其传递给php脚本,然后验证登录ID和密码并回显消息

php脚本:

<?php
    require_once('dbconfig.php');
    //if (isset($_POST['signin'])) {
        $loginid = $_POST['loginid'];
        $password = $_POST['password'];

        if ($operations->login($loginid, $password)) {
            header("Location:../view/admin_home.php");
        } else {
            echo "wrong details";
        }
    //}
    $conn = null;
?>

html div应该打印消息:

<div id="status"></div>

当我在浏览器中运行代码时,没有显示错误,但代码不起作用,既不显示消息也不显示验证。

4 个答案:

答案 0 :(得分:0)

尝试一下:

<script>
$(document).ready(function(){
    $('#form').on('submit',function(e){
        e.preventDefault();
        var form = $(this);
        $.ajax({
            type: form.attr('method'),
            url:  "../controller/login_check.php",
            data: form.serialize()
        }).done(function (html) {
            $('#status').html(html);
        });
    });
});
</script>

答案 1 :(得分:0)

我通过阻止它执行默认功能来解决它​​

我使用e.preventDefault()它有效,但我现在有一个新问题 php脚本尝试重定向的页面出现在同一个登录页面上我该如何解决这个问题? here is a screen shot of the same

答案 2 :(得分:0)

你必须使用javascript重定向,你实际上并没有进入php页面,你只是检索任何打印的内容。

window.open(page,'_self')

而不是

header(...)

答案 3 :(得分:0)

我的贡献:

在ajax请求中我建议你结束php脚本,你可以使用一个简单的die();为了这。在此之后,您必须打印响应,您可以使用数字或字符串模式来公开这样:&#39; success&#39;或者&#39;失败&#39;,还有:1或0。

以下是新解决方案的相同示例:

<script>
    $(document).ready(function(){
        $('#form').on('submit',function(e){
            var loginid = $('#loginid').val();
            var password = $('#password').val();
            e.preventDefault(); //for avoiding conflict with default form function
            $.ajax({
                 type: "POST", 
                 url: "../controller/login_check.php",
                 data: {loginid: loginid, password: password},
                 success: function(response) {
                     if (response == 'success') {

                         // if a successful response, redirect your client
                         window.location.href = '../view/admin_home.php';
                     } else {

                         // if login fails, put a message on screen
                         $('#status').html('Wrong credentials, try again.');
                     }
                 }
            });
        });
    });
</script>

不要忘记在php中过滤数据,永远不要相信你的用户!

require_once('dbconfig.php');

// pre setting a response status as fail, this avoid you to use an
// else statement
$result = 'fail';

if (isset($_POST['signin'])) {

    // Apply filter and sanitize data, if the loginid is an e-mail 
    // use the FILTER_SANITIZE_EMAIL else a simple string filter is ok.
    $loginid = filter_input(INPUT_POST, 'loginid', FILTER_SANITIZE_EMAIL);
    $password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);

    if($operations->login($loginid,$password)){

        // If everything is ok, you just override the response message
        $result = 'success';
    }
}

// Ath the end you simply close the connection, print the response and
// stops the PHP script
$conn = null;
print(result);
die();