Bugfix PHP JSON データ通信 〜JSONが取得できない〜

JSからPHPにJSONでリクエストが送れない

WordPressプラグインの作成中に以下のようなエラーで手こずりましたので、解決方法を記載します。

JS(XmlHttpRequest)でJSONが送れない

初めは下のようなコードでデータの送信を試みました。

// 下のメソッドは次のように書いても良い(JSの場合) => createXHR("POST", stateChangeMethod);
    let xhr = createXHR(stateChangeMethod, null, null);
// JSONで送信する
xhr.open("POST", 'http://xxxx.com/xxx.php');
xhr.send(JSON.stringify(data));

// 状態変化時のメソッド(コールバック関数と呼ばれる)
function stateChangeMethod(res) {
    let READYSTATE_COMPLETED = 4;
    let HTTP_STATUS_OK = 200;
    if (res.target.readyState == READYSTATE_COMPLETED) {
        if(res.target.status == HTTP_STATUS_OK) {
            console.log("レスポンス取得: " + res.target.response);
        } else {
            alert("エラー: " + res.target.response);
        }
    }
}

この処理は、XMLHttpwRequestを作成して指定のURLに下のJSONを送信するものです。
let data = {question: "aaa", answer: "bbb"};

そして、受診する側(PHP)は下のようなコードで受診しました。

// JSONリクエストを受け取る
$data = $_POST['question'];
echo $data;

しかし、下のようなエラーが出ました。

レスポンス取得: <br />
<b>Notice</b>:  Undefined index: question in <b>/Users/takk/WP_DEV/wp/wp-content/plugins/CustomQuestionary/InsertQuestionary.php</b> on line <b>4</b><br />

ダメだったところ

ズバリ、PHPでJSONを取得するときは$_POSTとかが使えない。。。と言うところです。
なので、下のようなコードでJSONを取得します。

// JSONリクエストを受け取る
$json = file_get_contents('php://input');
$data = json_decode($json);
$question = $data->question;

これで、なんとか・・・

こんな感じで解消できました。

でわでわ。。。



関連ページ

  1. WordPress プラグイン作成〜DBを使用する〜
  2. PHP PDO 〜MySQLにアクセスする〜
  3. PHP Ajax 〜DBに登録したデータを受信する〜
  4. Google Maps API PHP連携 〜マップ情報をDBに登録する〜
  5. PHP Image File 〜iPhoneやAndroidでの画像送受信の問題〜
  6. AngularJS Routing 〜PHPをWeb APIにする〜
  7. WordPress PHPカスタム〜根本的に見た目を変える〜
  8. WordPress PHPカスタム〜根本的に見た目を変える2〜
  9. Eclipse PHPプラグイン 〜ElipseでWordPress環境を構築〜
  10. WordPress テスト実装 〜heade-test.phpを表示〜
  11. AngularJS + PHP 〜WordPressと連携する〜
  12. AngularJS + PHP 〜AngularJSの実装〜
  13. AngularJS + PHP 〜AngularJSの実装2〜
  14. WordPress 処理解析 ~index.phpを眺める~
  15. WordPress Plugin NewStatPress ~アクセス解析プラグインAPIを使う~
  16. WordPress 処理解析 ~ログイン処理を調べる~
  17. WordPressカスタム〜アンケートボタンを追加する(設計)〜
  18. WordPressカスタム〜プラグインの作成〜
  19. WordPressカスタム〜ダッシュボードのプラグイン画面作成〜
  20. WordPressカスタム〜ダッシュボードのプラグイン画面作成2〜
  21. WordPressカスタム〜ダッシュボードのプラグイン画面作成3〜
  22. WordPress プラグイン作成〜アンケート作成プラグインを作る〜

JS

関連ページ

  1. JS GoogleMaps API 〜オリジナル・データマップを作ろう〜
  2. 吹き出しにYoubetubeを埋め込む
  3. Ajax + XmlHttpRequest〜画像送信からDB登録して表示〜
  4. JS XmlHttpRequest 〜JSでの同期/非同期通信〜
  5. JS Google Maps API 〜GeoLocation 現在位置の取得〜
  6. AngularJS + PHP 〜AngularJSの実装〜
  7. AngularJS + PHP 〜AngularJSの実装2〜
  8. WordPress プラグイン作成 〜$wpdbでのSELECT〜
  9. WordPressプラグイン作成 〜HTML挿入まで完了〜
  10. WordPress プラグイン作成 〜アンケート挿入〜
  11. MAMP 起動設定 〜WordPressのテスト環境を作る〜
  12. MAMP WordPress 〜インポート時のエラー対処〜
  13. WordPress PHPカスタム〜根本的に見た目を変える2〜

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す