ホームページ >バックエンド開発 >PHPチュートリアル >JS AJAX POST JsonデータとPHPのデータ受信方法についての質問です。

JS AJAX POST JsonデータとPHPのデータ受信方法についての質問です。

WBOY
WBOYオリジナル
2016-06-13 12:03:421273ブラウズ

JS AJAX POST Jsonデータ、PHPのデータ受信方法について質問です
まず第一に、私は他のライブラリではなくJSを直接使用しているので、他のライブラリを例として使用しないでください
質問は次のようなものです、私は書きました

<br />var pageNow=this.className.substr(4);<br />var dID=document.getElementById("dID").value;<br />var url="OOXX";<br />var jsonData={<br />		"HdType":"3",<br />		"dID":dID,<br />		"content":content<br />		};<br />var data={data:jsonData};<br /> var contentType="application/json";<br />var ajax=new Simple.Ajax("POST", url, receive4, data,contentType); //receiveInfo是一个方法名<br />ajax.SendRequest();<br />

のような JS スクリプトを使用した AJAX メソッド。このメソッドでは、receive4 が AJAX コールバック メソッド、contentType がデータ ヘッダー、data が送信するデータです。わかると思いますが…
例をあげますと、単純なデータをPOSTで送信したときのデータの形式は「key1=value1&key2=value2」でしたので、サーバー側の取得方法を説明します。 PHP を使用すると、次のように $_POST. ["key1"] または $_POST["key2"] を使用しました
ここで、value1 または value2 自体の値に「&」記号が含まれる可能性があることを考慮して、JSON を使用して POST を実行したいと思います。オブジェクト全体を一度にサーバーに送信しましたが、PHP を使用してこのデータを取得する方法がわかりません。$_POST["data"] を使用して取得したものは空であり、取得できませんでした。 print_r($_POST) によって直接データを取得するにはどうすればよいですか?
-----解決策------ ---
Simple.Ajax の書き方を教えてもらえなかったので、原理的にしか話せません
1. post メソッドを使用して送信する場合、 Content-Type = application/x-www-form-urlencoded のステートメントが必要です
それ以外の場合、php は実行しません。受信データは $_POST 配列に解析されます
contentType = application/json のステートメントを送信しました。 Simple.Ajax が Content-Type = application/x-www-form-urlencoded ステートメントを自動的に追加する場合でも。これら 2 つの相補的なステートメントは、php を混乱させます
2. 送信するデータは、js オブジェクトである {data:jsonData} です。たとえ正常に送信できたとしても、PHP はオブジェクトを認識できないため、それを解析できません。外部と交換されるすべてのデータ構造は、双方が合意した形式の文字列にシリアル化する必要があります

Simple.Ajax が js オブジェクトを JSON 形式の文字列に変換できると仮定します
また、contentType も削除したとします= application/json 宣言
その後、$_POST のキーとしてその JSON 文字列を持つ要素が表示されます
contentType = application/json 宣言
を削除したくない場合は、おそらくそれを使用できますfile_get_contents('php://input') 受信コンテンツを取得します

------解決策------ ---
Content-Type=application/json ステートメントがある場合、$_POST にはデータがありません
-----解決策-------- ---- --------
file_get_contents('php://input')
ただし、成功する保証はありません

application/json はユーザーのための単なるサーバーです、ユーザーに伝えます: image/png と同様に、コンテンツを json オブジェクト
として解釈できます。これは、これが PNG 画像であることを意味します

。ユーザーがサーバーにデータを送信するときは、
application / のみです。 x-www-form-urlencoded
multipart/form-data
text/plain
3 つの宣言

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