AJAX 中如何从当前 URL 获取 GET 参数并传递给 PHP 后端

本文详解如何在前端通过 javascript 从当前页面 url(如 `verify.php?code=xxx`)中提取 `code` 参数,并通过 ajax 安全传递至独立的 php 处理脚本(如 `verify_action.php`),避免参数未定义错误,同时确保成功/失败消息正常显示。

在使用 AJAX 向后端提交数据时,若需将当前页面 URL 中的查询参数(如 ?code=1228119j8dwq8dj218)传递给另一个 PHP 脚本(如 verify_action.php),关键在于前端必须显式读取并传入该参数——仅靠 AJAX 请求本身无法自动继承原始 URL 的查询字符串。

你遇到的 code is undefined 错误,正是因为脚本中直接使用了未声明的变量 code:

data: { code: code } // ❌ code 未定义

✅ 正确做法是:利用浏览器原生 API URLSearchParams 从当前窗口地址中解析出 code 值:

? PHP 端注意事项(verify_action.php)

  • 必须启用 json_encode() 并设置正确响应头,确保前端能正确解析 JSON;
  • 务必防止 SQL 注入! 原代码中直接拼接 $_GET["code"] 到 SQL 是严重安全隐患,应改用预处理语句:
pdo->prepare("UPDATE user_table SET email_verify = 'Yes' WHERE user_verification_code = ?");
        $stmt->execute([$code]);

        if ($stmt->rowCount() > 0) {
            $success = '您的邮箱已成功验证';
        } else {
            $error = '未找到匹配的验证码,请确认链接是否正确';
        }
    } catch (Exception $e) {
        $error = '系统繁忙,请稍后重试';
        error_log("Verify action failed: " . $e->getMessage());
    }
} else {
    $error = '验证参数缺失,请勿手动修改链接';
}

echo json_encode(['error' => $error, 'success' => $success]);
?>

总结关键点

  • 前端用 URLSearchParams 安全提取 URL 参数,而非依赖未定义变量;
  • AJAX 中显式传参 + 指定 dataType: "json",提升健壮性;
  • PHP 端必须校验输入、使用预处理语句防注入、统一返回 JSON 格式;
  • 分离逻辑(verify.php 仅负责展示,verify_action.php 专注处理)是良好架构实践,不影响用户体验,反而更易维护与调试。