0

そのため、backbone.jsアプリケーションからサーバーに送信された有効なJSONリクエストのデコードに問題がありました。何を試しても、デコードされた$_POSTデータはnullを返しました。私はstackoverflowを突っ込んで、この解決策を見つけました:

$data = json_decode(file_get_contents('php://input'), true); 
print_r($data);

これはハックのように思われるので、PHPでバックボーンからJSONデータを処理するためのより良い方法があるかどうか疑問に思っています。PHPでbackbone.jsアプリケーションから送信されたJSONデータを受信して​​デコードする適切な方法は何ですか?

4

1 に答える 1

1

次のように、スクリプトにデータを送信するために使用されるリクエスト メソッドを確認する必要があります。

switch ($_SERVER['REQUEST_METHOD'])
{
    case 'POST':
    {
      // do something
    }
    break;

    case 'GET':
    {
      // do something else
    }
    break;

    case 'PUT':
    {
      // your snippet goes here
    }
    break;

    case 'DELETE':
    {
      // do something when request method == DELETE
    }
    break;
}

投稿したコードは、REQUEST_METHOD が PUT または DELETE の場合に使用する必要があるものです。それはまったくハックではありません。

POST 経由でデータを送信するようにバックボーンを構成することもできます。

Backbone.emulateHTTP = true;

バックボーンのマニュアルから:

Backbone のデフォルトの REST/HTTP アプローチをサポートしていないレガシー Web サーバーを使用する場合は、Backbone.emulateHTTP を有効にすることを選択できます。このオプションを設定すると、HTTP POST で PUT および DELETE リクエストを偽装し、X-HTTP-Method-Override ヘッダーに true メソッドを設定します。emulateJSON もオンの場合、true メソッドが追加の _method パラメータとして渡されます。

于 2013-01-04T18:03:34.713 に答える