【问题标题】:PHP Post variable has duplicate, munged dataPHP Post 变量具有重复的、经过处理的数据
【发布时间】:2012-11-14 11:48:10
【问题描述】:

我正在研究一个可以启动 ajax 调用的简单链接。在我们的 Ubuntu 服务器退役之前,这按预期工作;我们有一个新的“相同”服务器。当我检查 POST 中的内容时,问题发生在服务器端。 $_POST["scan_date"] 的预期回声是:2012-11-26

实际回显为:2012-11-26scan_date=2012-11-26

这是下面 PHP 代码中的实际回显。 客户端警报给出了这个:2012-11-26,这就是我所期望的。 因此,服务器端似乎正在发生一些事情。我希望回声是“2012-11-26”而不是“2012-11-26scan_date=2012-11-26”

我不明白为什么 POST 数据会这样被弄乱。

PHP:

$date = isset($_POST["scan_date"]) ? $_POST["scan_date"] : date("Y-m-d");
echo $date;  //produces 2012-11-26scan_date=2012-11-26 which is bad

JQuery:

var val = $(this).attr('value');
dateSelected = val.replace(/facterOption-/g, "");
dateSelected = $.trim(dateSelected);
alert(dateSelected);  //alerts 2012-11-26 which is good

$.ajax({
type: "POST",
dataType: 'json',
url: 'https://someurl',
data: {
scan_date: dateSelected
}
})

更新:我们已经尝试了完全在这个 PHP 项目的代码框架之外的命令行 curl 调用,并且注意到了相同的结果。所以也许 Apache 与此有关。

此外,我们发现添加第二个 POST 参数和值可以解决这个问题。

【问题讨论】:

  • 为什么不使用 $.post 而不是 $.ajax ?它当然不能解决您的问题,但“更容易理解和使用”docs.jquery.com/Ajax/jQuery.ajax
  • echo file_get_contents('php://input') 说什么?这基本上就是 PHP 在将其解码为 $_POST 之前收到的内容。
  • 杰克,这很有趣,这是我从你的建议中得到的:scan_date=2012-11-09scan_date=2012-11-09
  • 绝对奇怪;那么可能是 Apache 的问题。
  • 同意。我们注意到,这只发生在我们只使用一个参数 POST 时。当我们使用两个参数 POST 时,就可以了。

标签: php jquery ajax apache post


【解决方案1】:

这是一个现有的错误。

https://bugs.php.net/bug.php?id=22773

解决办法是:

  • 将另一个虚拟名称/值对发送到帖子中
  • 要求 > IE6
  • 如果适用,使用 GET 而不是 POST

【讨论】:

  • 试过了,不幸的是它也给出了相同的输出。
  • 那么它肯定是您通过 ajax 发送的内容。您是否尝试查看通过 firebug 或 chrome 控制台发布的内容。
  • 参数application/x-www-form-urlencoded scan_date 2012-11-15
  • 我确实尝试添加括号,结果相同。
  • 用 var_dump($_POST); 得到什么
【解决方案2】:

在您的 PHP 文件中,尝试更改:

echo $date;

echo $_POST["scan_date"];

只是为了看看 PHP 文件正在接收什么。

【讨论】:

  • 当我直接回显 POST 数据时,我得到了相同的输出。
【解决方案3】:

Chrome developer tools network tabFirebug for Firefox 将帮助您调试请求。查看正在发送的请求。 PHP 中不太可能有一些东西会附加到您的请求中。很可能是在 JavaScript 中。

【讨论】:

  • FB 确认只有一个具有一个值的变量被 POST'd
猜你喜欢
  • 1970-01-01
  • 2015-02-14
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 2023-03-17
  • 2012-06-08
相关资源
最近更新 更多