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期望由 a = 符号分隔的键值对,这就是为什么你的字符串被这样拆开的原因。另见http://en.wikipedia.org/wiki/Url_encoding

您可能想查看 Json 反序列化器,因为您的请求具有 Json 格式: http ://www.playframework.com/documentation/2.2.x/ScalaJson

于 2013-10-19T10:22:10.367 回答