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

AJAX调用PHP函数失败:请求functions.inc.php返回404未找到

解决AJAX请求404及功能异常的建议

一、先解决404路径问题

  • 直接在浏览器地址栏输入http://192.168.1.104/functions.inc.php(根据实际文件位置调整路径),如果无法访问,说明:
    • 文件functions.inc.php的实际位置与请求路径不匹配,检查文件是否放在网站根目录,或调整AJAX的url参数:
      • 若文件在网站根目录,用绝对路径:url: '/functions.inc.php'
      • 若文件和当前页面同目录,确认页面URL层级(比如页面在/sub/page.html,则路径应为../functions.inc.php)
    • 服务器权限问题:确保PHP文件权限为644(Linux),服务器进程能读取该文件
    • 服务器配置问题:检查是否禁用了PHP解析,或存在.htaccess重写规则导致请求被拦截

二、修复JS代码中的逻辑错误

你当前的JS存在异步逻辑错误和语法问题,修正后代码如下:

function updateLogo(){
    $.ajax({ 
        url: '/functions.inc.php', // 改用绝对路径避免层级问题
        data: {action: 'getLogo'},
        type: 'post',
        success: function(output) {
            alert(output);
            // 把DOM操作移到异步回调内,且使用变量output而非字符串
            document.getElementById('teamLogo').src = output; 
        },
        // 新增错误回调,方便排查请求问题
        error: function(xhr, status, err) {
            alert('请求失败: ' + err + ',状态码: ' + xhr.status);
        }
    });  
}
  • 原代码中<?error_log("In update logo "); ?>是PHP代码,会在页面加载时执行一次,而非调用函数时执行,需删除或移到PHP文件内
  • AJAX是异步操作,原代码中回调外的alert(output)和DOM操作会在请求完成前执行,此时output未定义,必须移到success回调内
  • document.getElementById('teamLogo').src = 'output';中的'output'是字符串,需改为变量output

三、完善PHP文件的请求处理

确保functions.inc.php能正确处理action=getLogo的请求,示例代码:

<?php
// 可选:打日志确认请求是否到达
error_log("收到getLogo请求");

if(isset($_POST['action']) && $_POST['action'] === 'getLogo'){
    // 这里写获取对应队伍Logo的逻辑,比如从配置文件读取队伍ID,返回图片URL
    // 示例:假设配置文件中存储的队伍ID为1,对应logo路径为/images/team1.png
    $teamId = file_get_contents('config.txt'); // 读取配置文件中的队伍ID
    $logoUrl = "/images/team{$teamId}.png"; // 拼接对应的logo路径
    echo $logoUrl;
    exit; // 终止脚本,避免输出多余内容
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:15:32