开发者社区> 问答> 正文

我写了一个PHP+Ajax的登陆页面,但是没有效果,麻烦大神帮忙看看怎么回事:报错

这里是HTML部分代码:


<div role="main" class="ui-content">
<form method="post" action="php/login.php" id="form" name="form">
<ul>
<input id="user" type="text" name="user" value="" placeholder="请输入用户名" />
<br>
<input id="password" name="password" type="password" value="" placeholder="请输入密码"/>
<br>
<a id="btn1" type="submit" href="#index3" data-role="button" data-icon="user" 
style="width:30%;float:left">登录</a>
<a href="#index2" data-role="button" data-icon="plus" style="width:30%;float:right">注册</a>
<li id="confirm"></li>
</ul>
</div>

下面是Jquery Ajax代码:

$(document).ready(function(){
    $("#form").submit(function(){
        login();
        return false;
    });
});
function login(){
    var user = $("#user").val();
    var password = $("#password").val();
    if (user == ""){
        $("#confirm").text("请输入登录用户名");
        $("user").focus();
        return false;
    }
    if(password == ""){
        $("#confirm").text("请输入登录密码");
        $("#password").focus();
        return false;aaaaa
    }
    $.ajax({
        type: "POST",
        url: "php/login.php",
        dataType: "json",
        data: {"user" : "user", "password": "password"},
        beforeSend: function(){
        $("confirm").text("登录中,请稍候");
        },
        success: function(msg){
            if(msg == "successful"){
                $("#confirm").text("登录成功,欢迎" + user + "回来!正在进入你的空间");
            }else {
                $("#confirm").text("没有此用户或者密码不正确!");
            }
        }
    });
};
最后是PHP的代码:

<?php
include_once('db.php');
if(isset($_SESSION['user'])){
	echo json_encode(array('result'=>'successful'));
	return;
}


$user=$_GET['user'];
$password=$_GET['password'];

if($user==""){
	echo json_encode(array('result'=>'failed','message'=>'Username or password wrong'));
	return;
	}
if($password==""){
	echo json_encode(array('result'=>'failed','message'=>'Username or password wrong'));
	return;
}

	$link = new mysqli('localhost', $dbuser, $dbpass, $dbname);

    if ($link->connect_error) {
		die("Connection failed: " . $link->connect_error);
	} 

	$sql = "SELECT * FROM `user` WHERE name= '".$user."' and password= '".$password."'";
	$result = $link->query($sql);
	if ($result->num_rows > 0) {
			$details = $result->fetch_assoc();
			
			$_SESSION['user'] = $details['name'];
			
			echo json_encode(array('result'=>'successful'));
			return;
		}else
		{
			echo json_encode(array('result'=>'failed','message'=>'Username or password wrong'));
			
		}

?>



控制台没有报错,但是点击登陆按钮就是没有任何反应。登陆验证完全无效。



展开
收起
kun坤 2020-06-06 18:15:01 620 0
1 条回答
写回答
取消 提交回答
  • 用chrome和developer console看一下ajax请求的request、response,FF的firebug也可以。

    ######

    看到了几个问题:

    0. 在submit中我都是event.preventDefault(),不知道return fasle是不是一样。
    1. 多个类似的问题(下面还有一个confirm,那个测试用的“aaaaa”也可以删了)

    var user = $("#user").val();
        var password = $("#password").val();
        if (user == ""){
            $("#confirm").text("请输入登录用户名");
            $("user").focus();  // ->  $('#user').focus();
    2. 你在ajax中用POST方式,但是在服务器用的是GET方式
    3. dataType:"json" 应该不是json(可以不要这行),你服务器 读取的方式是form的形式
    4. 在js和PHP中可以直接if(str)来判断str是不是为空 ######回复 @南漂一卒 : 非常感谢你的讲解! =)######jQuery 事件回调中可以用 return false; 一次性 禁用默认功能、阻止冒泡传播,但不推荐这种做法了~######用多了框架,看原生php突然各种不适应######PS: 小心SQL注入######

    php或者mysql都是utf8了吗?php有没有bom值(如果有,要去除)。 

    要注意jQuery操作json是需要utf8的。

    ######把msg =="successful" 改成 msg.result =="successful"
    ######a似乎没有type属性,没有激活表单的submit事件,试着加入input type="submit" 或者 通过事件绑定执行提交。######

    引用来自“Micooz”的评论

    a似乎没有type属性,没有激活表单的submit事件,试着加入input type="submit" 或者 通过事件绑定执行提交。
    +1######直接在后台程序打印出传入的值。。。如果有值则说明后台程序没有问题。。。。
    ######用post提交,用GET怎么可能会接收到?
    2020-06-06 18:15:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载