jQuery+Ajax实现用户名重名实时检测

下面是“jQuery+Ajax实现用户名重名实时检测”的完整攻略:

1. 确认需求

在包含注册功能的网站中,为了避免用户注册时输入了已经存在的用户名,通常需要使用实时检测技术,及时判断当前输入的用户名是否在数据库中已经存在。基于此需求,我们需要使用jQuery和Ajax来实现这个功能。

2. 编写HTML部分

首先,在HTML中需要创建一个表单,包含输入框和提示消息的元素:

<form>
  <label for="username">用户名</label>
  <input type="text" id="username" name="username">
  <span id="username-tip"></span>
</form>

3. 编写jQuery代码

接下来需要编写jQuery代码,来实现实时检测功能。在jQuery中,使用 $.ajax 方法来向后台发起请求,并获取返回值。同时,通过 $.trim 方法来删除字符串两端的空格,以避免不必要的错误。

以下代码示例为实现当用户输入用户名后,实时检测该用户名是否已存在于数据库中,并给出相应的提示消息。

$('#username').blur(function() {
  var username = $.trim($(this).val());
  if (username === '') return;

  $.ajax({
    url: 'check_username.php',
    data: {username: username},
    dataType: 'json',
    type: 'POST',
    success: function(res) {
      if (res.code === 1) {
        $('#username-tip').text('该用户名已存在');
      } else {
        $('#username-tip').text('该用户名可以使用');
      }
    }
  });
});

4. 编写后端代码

最后需要编写后端代码,对接收到的用户名进行处理,判断其是否存在于数据库中。在后端代码中,可以使用PDO来连接到数据库,并使用 rowCount 函数获取符合条件的行数,以判断该用户名是否已经存在于数据库中。

以下示例代码为后端实现部分:

// 连接数据库
$dsn = 'mysql:host=localhost;dbname=user';
$username = 'root';
$password = '';
$dbh = new PDO($dsn, $username, $password);

// 获取用户名并查询
$username = $_POST['username'];
$sql = 'SELECT * FROM user WHERE username = ?';
$stmt = $dbh->prepare($sql);
$stmt->bindValue(1, $username);
$stmt->execute();

// 返回结果
if ($stmt->rowCount() > 0) {
  $res = array('code' => 1, 'msg' => '用户名已存在');
} else {
  $res = array('code' => 0, 'msg' => '用户名可使用');
}
echo json_encode($res);

5. 示例

下面给出一个使用jQuery+Ajax实现用户名重名实时检测的示例:

在前端页面中,输入框名为username,提示文字的元素名为username-tip

以下为检测的后台代码,执行流程为:

  • 接收到前端传来的用户名;
  • 查询数据库,统计用户名出现的次数,并返回结果。
<?php
header("Content-Type: application/json; charset=utf-8");

$username = $_POST['username'];
$con = mysqli_connect('localhost', 'root', '', 'demo');
if (!$con) {
    die("连接失败:" . mysqli_connect_error());
}

$qry = "select count(*) as c from users where username = ?";
$stmt = mysqli_prepare($con, $qry);
mysqli_stmt_bind_param($stmt, "s", $username);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);

if($row['c'] > 0) {
    $data = array("ret" => 1, "msg" => "用户名已存在");
} else {
    $data = array("ret" => 0, "msg" => "用户名可以使用");
}

echo json_encode($data);
mysqli_close($con);
?>

在jQuery中使用ajax并将后端返回值添加至对应元素内:

$("#username").change(function() {
    var username = $(this).val();
    $.ajax({
        method: "POST",
        url: "check_username.php",
        data: { username: username }
    })
    .done(function(data) {
        console.log(data);
        if (data.ret == 0) {
            $('#username-tip').text(data.msg).css('color', 'green');
        } else {
            $('#username-tip').text(data.msg).css('color', 'red');
        }
    })
    .fail(function(msg) {
        console.error(msg);
    });
});

这样,用户输入用户名时,jQuery会检测该用户名是否已经存在;如果存在,则改变该页面提示消息的颜色为红色、内容为“用户名已存在”;如果不存在,则改变该页面提示消息的颜色为绿色、内容为“用户名可以使用”。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery+Ajax实现用户名重名实时检测 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • SpringBoot返回多种格式的数据的实现示例

    在 Spring Boot 中,我们可以使用多种方式返回不同格式的数据,例如 JSON、XML、HTML 等。在本文中,我们将详细讲解 Spring Boot 返回多种格式的数据的实现示例。 示例一:返回 JSON 格式的数据 以下是一个示例,演示如何在 Spring Boot 中返回 JSON 格式的数据: 创建一个名为 UserController 的控…

    Java 2023年5月15日
    00
  • Netty结合Protobuf进行编解码的方法

    Netty结合Protobuf进行编解码的方法可以分为以下步骤: 添加依赖 为了使用Netty结合Protobuf进行编解码,需要添加以下两个依赖到项目的构建文件中: <!– 定义 protobuf 插件 –> <plugin> <groupId>org.xolstice.maven.plugins</group…

    Java 2023年5月20日
    00
  • 如何在Java程序中访问mysql数据库中的数据并进行简单的操作

    让我们来讲解如何在Java程序中访问MySQL数据库中的数据并进行简单的操作。 步骤一:下载并安装MySQL连接器 在开始编写Java程序之前,需要下载并安装MySQL的JDBC驱动程序。可以在MySQL官方网站下载最新版本的MySQL连接器。下载完成后,将.jar文件添加到Java项目的类路径中。 步骤二:创建数据库连接 在Java程序中连接MySQL数据…

    Java 2023年5月19日
    00
  • jquery ajaxfileupload异步上传插件

    jquery ajaxfileupload异步上传插件是一款可以在页面上实现文件异步上传的插件,可以帮助我们更方便地实现文件上传功能,并且使用方便、易于操作。下面是这款插件的完整攻略: 一、安装和引用 jquery ajaxfileupload异步上传插件可以使用npm包管理器进行安装,也可以使用CDN引入。以下是使用CDN引入的方法: <script…

    Java 2023年5月20日
    00
  • MyBatis中SqlSession实现增删改查案例

    下面我会详细讲解MyBatis中SqlSession实现增删改查的完整攻略,包含了两个具体的示例。 什么是SqlSession SqlSession是MyBatis中的一个接口,用于执行对数据库的增删改查操作。它的实现类是DefaultSqlSession。 在使用MyBatis时,通常先是通过SqlSessionFactory创建一个SqlSession实…

    Java 2023年5月20日
    00
  • 如何使用JDBC连接数据库并执行SQL语句

    下面是如何使用JDBC连接数据库并执行SQL语句的完整攻略: 一、引入JDBC驱动 在Java程序中使用JDBC(Java DataBase Connectivity)需要先引入JDBC驱动。不同的数据库所对应的驱动不同,这里以MySQL为例: <!– 在项目的pom文件中添加MySQL驱动的依赖 –> <dependency> …

    Java 2023年5月20日
    00
  • JSP中通过Servlet 将服务器硬盘图片并展示到浏览器

    在JSP中通过Servlet展示服务器硬盘上的图片,可以按照以下步骤来实现: 在web.xml文件中配置servlet 在web.xml文件中配置servlet,将servlet的访问路径配置为“/image”,并将servlet的类名配置为“com.example.ImageServlet”。 示例代码: <servlet> <servl…

    Java 2023年6月15日
    00
  • @JsonFormat 和 @DateTimeFormat 时间格式化注解(场景示例代码)

    @JsonFormat和@DateTimeFormat是两个常用的时间格式化注解。 @JsonFormat注解 @JsonFormat是一个Jackson库提供的注解,用于对Date类型的属性进行格式化,将Date类型格式化为指定的格式的字符串,或者将String类型的值反序列化为Date类型。 使用@JsonFormat注解可以将Date类型的属性格式化为…

    Java 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部