2

私は ajax 呼び出しを開始する単純なリンクに取り組んでいました。これは、Ubuntu サーバーが廃止されるまで期待どおりに機能しました。新しい「同一の」サーバーがあります。POST の内容を調べると、サーバー側で問題が発生します。$_POST["scan_date"] の期待されるエコーは: 2012-11-26

実際のエコーは: 2012-11-26scan_date=2012-11-26

これは、以下の PHP コードの実際のエコーです。クライアント側のアラートはこれを示します: 2012-11-26 そしてそれは私が期待するものです。そのため、サーバー側で何かが起こっているようです。エコーは「2012-11-26scan_date=2012-11-26」ではなく「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 がこれに関係している可能性があります。

さらに、2 つ目の POST パラメーターと値を追加することで、これが処理されることがわかりました。

4

3 に答える 3

1

PHPファイルで、以下を変更してみてください。

echo $date;

echo $_POST["scan_date"];

PHPファイルが何を受信して​​いるかを確認するだけです。

于 2012-11-26T22:42:14.633 に答える
1

これは既存のバグです。

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

解決策は次のとおりです。

  • 別のダミーの名前/値のペアを投稿に送信します
  • 必要 > IE6
  • 該当する場合は、POST の代わりに GET を使用します
于 2012-11-26T22:40:02.273 に答える
1

Chrome 開発者ツールのネットワーク タブまたはFirefox の Firebug は、リクエストのデバッグに役立ちます。送信されているリクエストを見てください。リクエストに何かを追加するものが PHP にあるとは考えにくいです。ほとんどの場合、それは JavaScript にあります。

于 2012-11-26T23:59:44.857 に答える