AJAX POST发送数据到PHP后端isset($_POST)检测不到接收失败问题
问题原因
- 浏览器地址栏手动访问页面时默认发起GET请求,不会携带任何POST参数。你的PHP代码仅校验
$_POST全局变量中的inputval参数,GET请求下该参数不存在,因此返回Not recieved。 - AJAX请求明确指定了
type: 'post',参数会被正确携带到$_POST中,因此请求结果符合预期。
解决方案
根据业务需求可选择以下任意一种方案:
方案1:兼容GET/POST两种请求方式
如果你需要支持直接在地址栏访问获取结果,可以将PHP代码中的$_POST替换为$_REQUEST,该全局变量可同时接收GET和POST传递的参数:
if (isset($_REQUEST['inputval'])){ $result = $_REQUEST['inputval']; echo json_encode($result); } else { echo 'Not recieved'; }
修改后可通过 你的PHP访问地址?inputval=自定义参数 的形式直接在浏览器访问获取返回结果。
方案2:保留仅POST访问的逻辑
如果该PHP文件是专门供AJAX调用的后端接口,不允许直接通过GET请求访问,那么当前的表现是完全正常的,无需修改代码,直接访问返回报错反而可以拦截非法的非接口请求。
补充提示:你提供的AJAX代码片段末尾缺少闭合的
});,实际部署时请补全避免语法错误。
内容的提问来源于stack exchange,提问作者József Kiss
相关产品推荐
相关产品推荐

