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 つの宣言