0

0

jQuery Ajax 请求失败:PHP 文件未执行的排查与修复指南

花韻仙語

花韻仙語

发布时间:2026-01-31 11:01:07

|

918人浏览过

|

来源于php中文网

原创

jQuery Ajax 请求失败:PHP 文件未执行的排查与修复指南

本文详解 jquery ajax 无法触发 php 执行的常见原因,重点聚焦路径错误、cookie 时效性及跨上下文问题,并提供可立即验证的调试方法与完整修复代码。

在使用 jQuery 的 $.ajax() 调用 PHP 后端脚本(如 admin_qr.php)时,若页面未显示预期输出(例如 echo $_COOKIE['qrpass'] 的内容),并非 PHP 本身“不执行”,而是 Ajax 请求根本未成功抵达服务器——最常见、最易被忽略的原因是 URL 路径解析错误

? 第一步:确认请求是否真正发出并到达服务器

打开浏览器开发者工具(F12 → Network 标签页),刷新页面,筛选 XHR 请求,找到 admin_qr.php 条目:

  • ✅ 若看到状态码为 200,说明请求成功,需检查 PHP 输出或前端处理逻辑;
  • ❌ 若状态码为 404(Not Found),说明 url: "admin_qr.php" 是相对路径,但当前 HTML 页面所在位置与 admin_qr.php 不在同一目录层级,导致浏览器拼接出错(例如页面在 /popup/index.html,而 PHP 在 /admin_qr.php,则实际请求会变成 /popup/admin_qr.php)。

修复方案:改用绝对路径(推荐)
将 Ajax 的 url 改为以 / 开头的根相对路径(假设 admin_qr.php 位于网站根目录):

$.ajax({
  url: "/admin_qr.php", // ✅ 根路径,避免层级歧义
  method: "GET",
  dataType: "text",
  success: function(data) {
    $(".result").html("PHP 返回: " + data);
  },
  error: function(xhr, status, error) {
    $(".result").html("请求失败: " + status + " — " + error);
  }
});
? 提示:也可使用 window.location.origin + "/admin_qr.php" 构造完整 URL,确保跨子域/端口兼容。

⚠️ 第二步:关键陷阱——Cookie 设置时机与作用域

你的 JavaScript 中通过 document.cookie = "qrpass=" + password; 设置 Cookie,但该 Cookie 默认仅对当前路径生效。若 admin_qr.php 位于不同路径(如 /admin/ 子目录),且未显式指定 path=/,PHP 将无法读取该 Cookie。

修复方案:设置 Cookie 的 path 和有效期

Boba.video
Boba.video

AI动漫视频生成器

下载

立即学习PHP免费学习笔记(深入)”;

// 替换原 document.cookie 行:
document.cookie = "qrpass=" + password + "; path=/; max-age=300"; // 5分钟有效期,全局可读

同时,PHP 端应增加健壮性判断,防止因 Cookie 未就绪导致空输出:

<?php
// admin_qr.php
if (isset($_COOKIE['qrpass']) && !empty($_COOKIE['qrpass'])) {
    echo htmlspecialchars($_COOKIE['qrpass'], ENT_QUOTES, 'UTF-8');
} else {
    echo "ERROR: qrpass cookie not found or empty";
}
?>

? 完整可运行示例(含调试提示)

<script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
<div id="qrcode"></div>
<div class="result">等待 PHP 响应...</div>

<script>
  const chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  const passwordLength = 12;
  let password = "";
  for (let i = 0; i < passwordLength; i++) { // ⚠️ 修正:i < length,非 <=
    const randomNumber = Math.floor(Math.random() * chars.length);
    password += chars[randomNumber];
  }

  // ✅ 设置全局可访问的 Cookie
  document.cookie = `qrpass=${password}; path=/; max-age=300`;

  // ✅ 使用 QRCode.js(需提前引入)
  if (typeof QRCode !== 'undefined') {
    new QRCode(document.getElementById("qrcode"), {
      text: password,
      width: 200,
      height: 200
    });
  }

  // ✅ Ajax 请求(带错误处理)
  $.ajax({
    url: "/admin_qr.php",
    method: "GET",
    timeout: 5000,
    success: function(data) {
      $(".result").html("✅ 成功获取密码: " + data);
    },
    error: function(xhr) {
      $(".result").html(
        "❌ 请求失败!<br>" +
        "状态码: " + xhr.status + "<br>" +
        "响应文本: " + (xhr.responseText || "无返回") + "<br>" +
        "请检查 Network 面板中 admin_qr.php 是否 404"
      );
    }
  });
</script>

✅ 总结:三步快速定位与解决

  1. 查 Network:确认 admin_qr.php 请求是否 404 → 修正 url 为绝对路径 /admin_qr.php;
  2. 验 Cookie:确保 JS 设置 Cookie 时含 path=/,PHP 使用前加 isset() 判断;
  3. 加容错:Ajax 必须包含 error 回调,PHP 输出需 htmlspecialchars() 防 XSS,且避免空白符干扰。

遵循以上步骤,90% 的“PHP 不执行”问题将迎刃而解——本质是前端请求未触达后端,而非 PHP 失效。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

156

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

408

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

516

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

312

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

129

2024.02.23

jquery中什么是高亮显示
jquery中什么是高亮显示

jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

184

2024.02.23

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

51

2026.01.13

bootstrap安装教程
bootstrap安装教程

本专题整合了bootstrap安装相关教程,阅读专题下面的文章了解更多详细操作教程。

22

2026.03.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.4万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号