开发者社区> 问答> 正文

我写了一个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'));
             
        }
 
?>


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


 公子彦 公子彦
发帖于 1年前
21回/707阅
标签:  jQuery PHP
举报  | 分享到
0
收藏(0)
按票数排序  显示最新答案   共有21个答案 (最后回答: 1年前 )
1
BlueWoodsBlueWoods 1年前
用chrome和developer console看一下ajax请求的request、response,FF的firebug也可以。

评论(0)| 引用此答案| 举报 (2015-06-23 22:43)
1
Salty_EggSalty_Egg 1年前
看到了几个问题:

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();
  1. 你在ajax中用POST方式,但是在服务器用的是GET方式
  2. dataType:"json" 应该不是json(可以不要这行),你服务器 读取的方式是form的形式
  3. 在js和PHP中可以直接if(str)来判断str是不是为空

展开
收起
a123456678 2016-07-13 15:29:26 2595 0
1 条回答
写回答
取消 提交回答
  • a似乎没有type属性,没有激活表单的submit事件,试着加入input type="submit" 或者 通过事件绑定执行提交。

    2019-07-17 19:55:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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