开发者社区 问答 正文

null?报错

这里是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" data-role="button" data-icon="user" 
style="width:30%;float:left">登录</a>
<a 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'));
			
		}

?>



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



展开
收起
爱吃鱼的程序员 2020-06-14 15:14:19 418 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    用chrome和developerconsole看一下ajax请求的request、response,FF的firebug也可以。

    看到了几个问题:

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

    varuser=$("#user").val();varpassword=$("#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事件回调中可以用returnfalse;一次性禁用默认功能、阻止冒泡传播,但不推荐这种做法了~用多了框架,看原生php突然各种不适应PS:小心SQL注入

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

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

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

    引用来自“Micooz”的评论

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