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

jQuery $.post通过REST路由请求时$_SERVER['REQUEST_METHOD']异常

jQuery $.post 请求自定义REST路由出现REQUEST_METHOD匹配异常

基础配置与报错现象

我的REST端点路由配置如下:

'foo/bar'=>[
    'GET'=>[
        'controller'=>$fooController, 
        'action'=>'baz'
     ],
     'POST'=>[
         'controller'=>$fooController, 
         'action'=>'barSave'
     ]
],

使用jQuery 3.6.0版本的$.post()发起请求的代码如下:

$.post({
    url: '/foo/bar',
    data:  data,
    success: function(data, status, jqXHR){ 
       alert('Post successful');
    },
    error: function (jqXHR, status){
       alert('Post failed: ' + jqXHR.responseText)
    },
    dataType: "JSON"
});

请求返回的jqXHR.responseText提示入口文件存在undefined index POST错误,报错代码行为:

$controller = $routes[$this->route][$this->method]['controller'];

其中$this->method的取值直接来自$_SERVER['REQUEST_METHOD']。
该异常仅出现在jQuery发起的POST请求中,所有原生表单提交的POST请求走同一套路由逻辑均能正常运行,查阅jQuery官方接口文档未找到相关问题说明。

补充路由逻辑与异常细节

现有路由实现逻辑

入口文件index.php中的初始化代码如下:

$route = ltrim(strtok($_SERVER['REQUEST_URI'], '?'), '/');
$method = $_SERVER['REQUEST_METHOD'];
$entrypoint = new \Entrypoint($route, new \Routes(), $method);
$entrypoint->enter();
  • Routes类构造方法会初始化所有依赖的模型实例并存为类变量,通过getRoutes()方法基于已实例化的模型生成对应控制器,返回格式与上文展示的路由配置一致的$routes数组:以controller/action格式的URI为键,对应值包含该路径支持的请求方法、绑定的控制器实例与动作方法。
  • Entrypoint->enter()方法首先校验请求URI并存入$this->route,完成用户重认证逻辑后,通过以下代码匹配当前请求对应的控制器与动作:
$controller = $routes[$this->route][$this->method]['controller'];
$action = $routes[$this->route][$this->method]['action'];

匹配完成后初始化视图实例,调用$view->output($model)输出响应结果,整套逻辑已在多个过往项目中稳定运行无异常。

异常具体表现

首次使用jQuery $.post()方法测试功能时即出现异常,具体现象包括:

  • 向配置好的/foo/bar地址发起POST请求失败,向不存在的/foo/foo/bar地址发起请求反而能命中处理逻辑
  • 响应会返回未手动配置的303状态码
  • 错误请求不会按照原有逻辑返回自定义404响应
  • 异常出现一段时间后,Chrome开发者工具的网络面板甚至不再显示这些jQuery发起的请求
  • 清空浏览器缓存后上述异常仍然存在
  • 将POST处理动作迁移到当前页面对应的控制器后,$.post()请求可以稳定运行,因此曾怀疑是REST路由触发了未知的回退逻辑

已确认请求URL填写的是绝对路径'/foo/bar'而非相对路径'foo/bar',甚至尝试过通过var absUrl = window.location.origin+"/foo/bar"拼接完整绝对地址发起请求,问题仍然复现。

本人前端基础薄弱,日常可独立完成常规功能开发,这是第一次使用jQuery,目前排查思路受阻,无法理解异常产生的逻辑,希望能定位问题根本原因。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:18:16