2

POSTフロントエンドから、次のデータを使用して jQuery を実行しています。

[{name: "Kevin", age: 100, favoriteOperator:"="}]

この POST が/sampleURL にヒットします。

私のコントローラーでは、次を使用して POST の本文を読み取ります。

  def submit = Action { implicit request => 
 val maybeRequestAsFormUrlEncoded: Option[Map[String, Seq[String]]] =  
                        request.body.asFormUrlEncoded

マップを印刷すると、次のようになります。 Map([{"name" : "Kevin", "age" : 100, "favoriteOperator" :" -> List("}])

ではなくfavoriteOperatorとして表示されるのはなぜですか?" -> List(""="

4

1 に答える 1

1

asFormUrlEncoded次のような入力を期待していることは間違いありません。

queryString=abc,def
anotherQueryString=blabla

次に、次のようにマップに変換されます。

Map("queryString" -> List("abc", "def"), "anotherQueryString" -> List("blabla"))

abc,def(実際にリストに逆シリアル化されているかどうかblablaはよくわかりません。サンプルでリストを取得したために、そのアイデアが生まれました)。とにかく、重要なのは、キーと値のペアが = 記号で区切られてasFormUrlEncodedいることを期待することです。そのため、文字列はそのように分解されます。http://en.wikipedia.org/wiki/Url_encodingも参照してください。

リクエストが Json 形式であるため、プレイ中の Json デシリアライザーを調べることをお勧めします: http://www.playframework.com/documentation/2.2.x/ScalaJson

于 2013-10-19T10:22:10.367 に答える