2

我正在研究一个可以启动 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

查询:

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 参数和值可以解决这个问题。

4

3 回答 3

1

这是一个现有的错误。

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

解决方案是:

  • 将另一个虚拟名称/值对发送到帖子中
  • 要求 > IE6
  • 如果适用,使用 GET 而不是 POST
于 2012-11-26T22:40:02.273 回答
1

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

echo $date;

echo $_POST["scan_date"];

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

于 2012-11-26T22:42:14.633 回答
1

Chrome 开发者工具网络选项卡Firefox 的 Firebug将帮助您调试请求。查看正在发送的请求。PHP 中不太可能有一些东西会附加到您的请求中。很可能是在 JavaScript 中。

于 2012-11-26T23:59:44.857 回答