php が Ajax データを受信できない問題の解決策: 1. 宣言コードを「Content-Type=application/x-www-form-urlencoded」として追加します; 2. それを次のとおり文字列にシリアル化します。双方が合意した形式。
推奨: 「PHP チュートリアル 」
PHP が json 値を受け取れない問題の解決策ajax メソッドで送信される
JS では、送信された JSON データが PHP の $_POST で受信されるように、contentType = application/x-www-form-urlencoded を指定する必要があります。
jQuery の contentType のデフォルト値: "application/x-www-form-urlencoded" (サーバーに情報を送信するときのコンテンツ エンコード タイプ)。デフォルト値はほとんどの場合に適しています。コンテンツ タイプを $.ajax() に明示的に渡すと、(送信するデータがない場合でも) 確実にサーバーに送信されます。
1. post メソッドを使用して送信する場合は、Content-Type = application/x-www-form-urlencoded のステートメントが必要です。そうでない場合、php は受信データを $_POST 配列に解析しません。 。
が contentType = application/json を宣言すると、Ajax は Content-Type = application/x-www-form-urlencoded 宣言を自動的に追加します。これら 2 つのステートメントも PHP を混乱させます。
2. 送信されるデータは、js オブジェクトである {data:jsonData} です。たとえ送信に成功したとしても、PHP はオブジェクトを認識できないため、それを解析できません。外部と交換されるすべてのデータ構造は、双方が合意した形式の文字列にシリアル化する必要があります。
Js.Ajax が js オブジェクトを JSON 形式の文字列に変換できると仮定します。
そして、 contentType = application/json の宣言も削除されます。
$_POST
でその JSON 文字列をキーとして持つ要素が表示されます。contentType = application/ を削除したくない場合は、 json ステートメント
おそらく、file_get_contents('php://input') を使用して受信コンテンツを取得できます。
php://input を使用すると、POST の元のデータを読み取ることができます。 $HTTP_RAW_POST_DATA よりもメモリへの負担が少なく、特別な php.ini 設定は必要ありません。 php://input は enctype=”multipart/form-data” では使用できません。
以上がPHPがAjaxデータを受信できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。