You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

当MySQL查询无结果时,如何用jQuery实现元素显示与隐藏?

问题修复方案

核心问题分析

原代码存在三个关键问题:PHP输出方式错误、SQL注入风险、前端逻辑颠倒,同时HTML标签嵌套不规范。


1. 修复PHP代码(checkMail.php)

替换原代码为以下内容,解决输出、注入和无结果报错问题:

include("../config.php");
$db = new Database();

// 过滤并获取POST参数
$email = filter_input(INPUT_POST, 'company_email', FILTER_VALIDATE_EMAIL);
if (!$email) {
    echo json_encode(['exists' => false]);
    exit;
}

// 使用参数化查询避免SQL注入
$query = "SELECT company_email FROM sic_auth WHERE company_email = ?";
// 假设你的Database类支持参数绑定,若不支持需调整为对应方法
$result = $db->ExecuteQuery($query, [$email]);
$exists = !empty($result);

// 返回JSON格式的状态
echo json_encode(['exists' => $exists]);

注:如果你的Database类不支持参数绑定,需手动转义特殊字符:$email = $db->escapeString($email);,再拼接SQL,但参数化查询是最优方案。


2. 修复jQuery代码

调整逻辑,正确处理邮箱存在/不存在的两种情况:

function checkMailStatus() {
    var company_email = $("#company_email").val();
    $.ajax({
        type: 'post',
        url: 'checkMail.php',
        dataType: 'json', // 指定接收JSON格式数据
        data: {
            company_email: company_email
        },
        success: function(response) {
            if (response.exists) {
                // 邮箱已存在:显示错误,禁用提交按钮
                document.getElementById("submit-form").disabled = true;
                $("#err-text").text("该邮箱已被注册。").show();
                $('#company_email').addClass('err-input');
            } else {
                // 邮箱不存在:隐藏错误,启用提交按钮
                document.getElementById("submit-form").disabled = false;
                $("#err-text").text("").hide();
                $('#company_email').removeClass('err-input');
            }
        },
        error: function() {
            // 请求失败时的容错处理
            $("#err-text").text("验证失败,请重试。").show();
        }
    });
}

3. 修复HTML标签嵌套

原HTML中label标签闭合错误,调整为:

<label for="company_email" id="email-err">Company Email address <span class="text-danger">*</span></label>
<input type="email" class="form-control" onblur="checkMailStatus()" name="company_email" id="company_email" value="a@b.com" placeholder="Email" required>
<i class="input-helper"></i>
<span id="err-text" style="display: none;"></span>

初始隐藏错误提示,避免页面加载时显示空标签


关键优化点

  • 用JSON返回结构化数据,前端判断更严谨
  • 加入SQL注入防护,提升安全性
  • 完善错误分支处理,覆盖请求失败场景
  • 规范HTML标签结构,避免渲染异常

内容的提问来源于stack exchange,提问作者SleepWalker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 10:42:56