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

IIS环境下运行HTML页面请求PHP接口返回404错误如何排查解决?

问题修复方案

1 404报错直接原因修复

你当前触发404的核心问题是HTML中引入的jQuery CDN地址拼写错误:
原地址写的是https://ajax.googleeapis.com/ajax/libs/jquery/1.11.0/jquery.min.js,其中googleeapis多写了一个e,修正为https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js即可解决该404问题。
额外排查点:

  • 确认jQuery.js、GettingFileInfo.php和HTML文件处于同级目录,若不在同级需要调整对应引用路径
  • 若IIS未配置PHP解析权限,也会导致GettingFileInfo.php返回404,需要在IIS角色中添加PHP处理映射

2 后端PHP逻辑修正

当前PHP代码存在返回格式错误问题,即使解决404也无法正常解析:

  • 调试输出print_r($files)会污染返回内容,导致JSON格式不合法
  • 已生成JSON编码后的$toJson变量,但实际返回的是未编码的$implodedFilesEqual字符串
  • 路径拼接用硬编码\MyFiles在Windows IIS环境下可能存在转义识别问题
  • 没有声明JSON响应头,前端可能识别返回内容为普通文本

修改后的GettingFileInfo.php代码:

<?php
// 调用主函数
getFileInfoMainFunction(); 

/**
 * 扫描目录并去除.和..
 * @param string $dir 目录路径
 * @return array 文件名数组
 */
function sscandir($dir)
{
    return array_values(array_diff(scandir($dir), array('..', '.'))); 
}

function getFileInfoMainFunction(){
    // 用系统目录分隔符拼接路径,适配Windows IIS环境
    $fileDirectory = dirname(__FILE__) . DIRECTORY_SEPARATOR . "MyFiles"; 
    $files = sscandir($fileDirectory); 
    $implodedFilesEqual = implode("|", $files); 

    // 包装成对象适配前端取name字段的逻辑
    $returnData = [
        'name' => $implodedFilesEqual
    ];

    // 声明JSON响应头
    header('Content-Type: application/json');
    // 输出JSON编码后的内容
    echo json_encode($returnData);
    exit;
}
?>

3 前端逻辑适配

你当前jQuery.js中用的是原生XMLHttpRequest逻辑,无需额外修改即可适配调整后的后端返回,如果你需要使用已经引入的jQuery简化代码,可以改成如下写法:

$(function(){
    $.post('GettingFileInfo.php', function(res){
        $('#demo').text(res.name);
    }, 'json');
});

内容的提问来源于stack exchange,提问作者Erik G Holmes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:36:04