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

使用XMLHttpRequest传参遇含&参数,PHP无法完整接收的求助

解决XMLHttpRequest传参含&符号及JSON格式接收问题

一、处理application/x-www-form-urlencoded格式的参数截断问题

application/x-www-form-urlencoded格式中&是参数分隔符,直接传递含&的title值会被拆分,导致PHP接收不完整。解决核心是对参数值做URL编码:

  • 用JavaScript的encodeURIComponent()方法对title进行编码,将&转成%26,PHP接收时会自动解码还原原始内容。

示例代码:

const title = '标题&包含&多个&符号';
const params = `title=${encodeURIComponent(title)}&status=1`;
const xhr = new XMLHttpRequest();
xhr.open('POST', 'handle.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(params);

PHP端读取:

$title = $_POST['title']; // 拿到完整的"标题&包含&多个&符号"

二、解决application/json格式PHP接收不到参数的问题

PHP默认不会自动解析application/json格式的请求体到$_POST数组,需要手动读取请求流并解码:

发送端代码

const postData = {
  title: '标题&包含&多个&符号',
  author: 'test'
};
const xhr = new XMLHttpRequest();
xhr.open('POST', 'handle.php', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify(postData));

PHP接收端代码

// 读取原始请求体
$rawData = file_get_contents('php://input');
// 解码为关联数组
$requestData = json_decode($rawData, true);

// 检查解码是否成功
if ($requestData) {
  $title = $requestData['title']; // 拿到完整标题
  $author = $requestData['author'];
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:06:29