2011-09-16 5 views
0

私はwireitをテストしており、新しいフォームコンテナなどを作成できます。私はAjaxのアダプタの例をテストし、それが何かconfigedていますWireit json出力を取得するには?

WireIt.WiringEditor.adapters.Ajax.config = { 
    saveWiring: { 
     method: 'PUT', 
     url: 'http://voipd7.localhost/wirings.json' 
    }, 
    deleteWiring: { 
     method: 'GET', 
     url: function(value) { 
      if(console && console.log) { 
       console.log(value); 
      } 
      // for a REST query you might want to send a DELETE /resource/wirings/moduleName 
      return "fakeSaveDelete.json"; 
     } 
    }, 
    listWirings: { 
     method: 'GET', 
     url: 'listWirings.json' 
    } 

保存URLは「http://voipd7.localhost/wirings.jsonを」たったの$ _GETや$ _POSTへの書き込みを行うPHPのページですファイルですが、出力する唯一のものは次のとおりです。

Array 
(
    [q] => wirings.json 
) 

私に何か不足していますか?これはgetやpostを使ってjsonのものを送るべきでしょうか?

答えて

0

提供された構成から、保存操作を実行するHTTPメソッドがPUTであることは明らかです。この方法を使用する場合、スーパーグローバル変数$_POSTまたは$_REQUESTには投稿されたデータは含まれません。 $_GETには依然としてクエリ文字列のデータがあります。方法はPUTとき

は、ポストされたデータを解析するには、次のいくつかの操作を行います。

$vars = array(); 
parse_str(file_get_contents("php://input"), $vars); 

PUT方法は、入力として、ファイルを受信することを期待します。そのため、file_get_contentsを使用し、parse_strは、URLを介して渡されたクエリ文字列であるかのように引数を解析します。 http://www.lornajane.net/posts/2008/accessing-incoming-put-data-from-php

ワンノート:私はこの非常に素晴らしい記事に返信基づき

$vars = array(); 
if($_SERVER['REQUEST_METHOD'] == 'GET') { 
    $vars = $_GET; 
} else if($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $vars = $_POST; 
} else if($_SERVER['REQUEST_METHOD'] == 'PUT') { 
    parse_str(file_get_contents("php://input"), $vars); 
} 

:通常、WebサーバがPUTメソッドを許可しないように設定されているのが、それを関係なく、メソッドの使用のデータ変数を抽出するにはPUTリクエストが既存のファイルに対するものである(少なくともApacheがこれを行う)と見なし、リクエストを処理するためにこのファイルを呼び出し、送信されたパラメータを抽出するためにファイルで上記のコードを使用することができます。

+1

ああ、そのことは私を得ていた。私はそれをputからputに変更しましたが、今までは何も私に何も与えていませんでした(file_get_contents)。 GETとPOSTはまだ動作しませんが、それはwireitのバグでなければなりません。 – that0n3guy

関連する問題