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

携带user_id参数访问表单时数据无法自动填充问题咨询

问题原因

你当前的表单填充逻辑仅绑定了输入框的onkeyup事件,只有用户手动在输入框敲击键盘输入内容时才会触发GetDetail拉取数据。你通过JS自动将URL参数中的user_id赋值到输入框的操作不会触发onkeyup事件,因此不会触发后续的字段填充逻辑。

解决方法

1. 补充页面加载时的自动触发逻辑

修改你的JavaScript代码,新增URL参数解析逻辑,页面加载完成后如果读取到URL中的user_id参数,自动赋值到输入框后主动调用GetDetail函数即可:

<script>
// 原有GetDetail函数保持不变
function GetDetail(str) {
  if (str.length == 0) {
    document.getElementById("first_name").value = "";
    document.getElementById("last_name").value = "";
    document.getElementById("phone_number").value = "";
    return;
  }
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
      var myObj = JSON.parse(this.responseText);
      document.getElementById("first_name").value = myObj[0];
      document.getElementById("last_name").value = myObj[1];
      document.getElementById("phone_number").value = myObj[2]; 
    }
  };
  xmlhttp.open("GET", "/wp-includes/gfg.php?user_id=" + str, true);
  xmlhttp.send();
}

// 新增:页面加载完成后自动读取URL参数触发填充
window.onload = function() {
  const urlParams = new URLSearchParams(window.location.search);
  const userIdFromUrl = urlParams.get('user_id');
  if (userIdFromUrl) {
    // 赋值到用户ID输入框
    document.getElementById('id').value = userIdFromUrl;
    // 主动调用数据拉取函数填充其他字段
    GetDetail(userIdFromUrl);
  }
}
</script>

2. 可选优化:兼容更多触发场景

如果需要支持粘贴用户ID、输入框失焦时也自动触发填充,可以给HTML的user_id输入框补充更多事件绑定:

<input type='text' name="user_id"
    id='id' class='form-control'
    placeholder='Enter user id'
    onkeyup="GetDetail(this.value)"
    onblur="GetDetail(this.value)"
    onpaste="GetDetail(this.value)"
    value="">

安全优化建议

你当前的PHP代码直接将用户传入的user_id拼接进SQL语句,存在SQL注入风险,建议修改为预处理语句:

<?php
// 读取user_id参数,不存在则默认为空
$user_id = $_REQUEST['user_id'] ?? '';
$con = mysqli_connect("localhost", "aaawacpa_gfg", "Ga011020019***", "aaawacpa_gfg");

// 初始化字段默认值
$first_name = $last_name = $phone_number = '';
if ($user_id !== "") {
    // 使用预处理语句避免SQL注入
    $stmt = mysqli_prepare($con, "SELECT first_name, last_name, phone_number FROM userdata WHERE user_id = ?");
    mysqli_stmt_bind_param($stmt, "s", $user_id);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
    $row = mysqli_fetch_array($result);
    if ($row) {
        $first_name = $row["first_name"];
        $last_name = $row["last_name"];
        $phone_number = $row["phone_number"];
    }
    mysqli_stmt_close($stmt);
}

$result = array($first_name, $last_name, $phone_number);
echo json_encode($result);
?>

内容的提问来源于stack exchange,提问作者Wonder In Wonderland

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:15:05