ホームページ  >  記事  >  バックエンド開発  >  PHPがAjaxデータを受信できない場合はどうすればよいですか?

PHPがAjaxデータを受信できない場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2020-07-25 10:01:563274ブラウズ

php が Ajax データを受信できない問題の解決策: 1. 宣言コードを「Content-Type=application/x-www-form-urlencoded」として追加します; 2. それを次のとおり文字列にシリアル化します。双方が合意した形式。

PHPがAjaxデータを受信できない場合はどうすればよいですか?

推奨: 「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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。