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日

相关文章

  • php基于环形链表解决约瑟夫环问题示例

    PHP基于环形链表解决约瑟夫环问题 什么是约瑟夫环问题? 约瑟夫环问题是一个有名的问题:N个人围成一圈,从第K个人开始报数,第M个人出圈;以此类推,直到所有人出圈。这个问题可以用链表来解决。 解决约瑟夫环问题的关键 解决约瑟夫环问题的关键是构建一个循环链表,从链表的头开始,每m个节点删除一个节点,直到链表中只剩一个节点,这个节点就是最后的幸存者。 PHP实现…

    Java 2023年5月26日
    00
  • Java利用for循环打印菱形的实例教程

    下面是Java利用for循环打印菱形的实例教程的完整攻略。 题目分析 我们需要打印一个菱形,实际上就是一个对称的四边形。那么我们可以通过for循环嵌套来实现。 代码实现 import java.util.Scanner; public class PrintDiamond { public static void main(String[] args) { …

    Java 2023年5月26日
    00
  • ssm框架+PageHelper插件实现分页查询功能

    以实现用户管理模块的分页查询功能为例,在使用ssm框架搭建基础框架后,我们可以按照以下步骤实现分页查询功能。 步骤一:添加PageHelper依赖 在项目的pom.xml文件中添加以下依赖: <dependency> <groupId>com.github.pagehelper</groupId> <artifact…

    Java 2023年6月16日
    00
  • SpringBoot图文并茂讲解依赖管理的特性

    SpringBoot图文并茂讲解依赖管理的特性 SpringBoot是一个非常流行的JavaWeb应用框架,其依赖管理的特性可以为我们开发带来很多便利。在本篇攻略中,我们将详细讲解SpringBoot依赖管理的特性,包括如何添加依赖、如何排除依赖、如何解决冲突等内容。 添加依赖 在使用SpringBoot开发Web应用时,我们经常需要使用许多第三方库来增强我…

    Java 2023年5月15日
    00
  • Java gbk转utf-8

    Java中GBK与UTF-8是常见的字符编码方式,这里讲解如何将GBK编码的字符串转换成UTF-8编码的字符串,共有两种方法。 方法一:手动转换 手动转换需要使用Java的编码转换API,具体步骤如下: 将字符串按GBK编码方式解码为字节数组; 将字节数组按UTF-8编码方式组装成字符串。 示例代码如下: import java.io.Unsupported…

    Java 2023年5月20日
    00
  • 基于Java实现五子棋小游戏(附源码)

    针对“基于Java实现五子棋小游戏(附源码)”这篇文章,下面是我的完整攻略。 标题 文章的主标题是“基于Java实现五子棋小游戏(附源码)”,是直接说明文章要讲的内容,也可以吸引用户的注意力;副标题是“开发环境、实现思路、代码解析、附带完整源码”,更加详细地介绍了文章会涉及到的方面。 代码块 代码块非常重要,而本文中五子棋小游戏的源码也是必不可少的一部分。文…

    Java 2023年5月26日
    00
  • tomcat共享多个web应用会话的实现方法

    实现多个Web应用共享会话的方法有很多,而在Tomcat中,也存在不同的实现方式。下面将详细讲解几种可行的方案。 方案一:使用Tomcat的内置共享会话功能 Tomcat自身具备相应的共享会话功能,可以通过修改配置文件来启用该功能。首先,在Tomcat安装目录下找到conf/context.xml文件,在其中添加以下配置: <Valve classNa…

    Java 2023年6月15日
    00
  • java 格式化时间的示例代码

    下面是“java格式化时间的示例代码”的完整攻略。 格式化时间的方法 在Java中,可以使用SimpleDateFormat类中的format方法对时间进行格式化。 代码演示 下面给出一个示例,假设有如下需要格式化的时间: Date date = new Date(); 要把这个时间格式化为“yyyy-MM-dd HH:mm:ss”的形式,可以使用以下代码:…

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