2013-05-06 39 views
4

我有一个关于发送JSON数据到播放控制器的问题。发送帖子JSON与Ajax和播放框架2

seach.scala.html

$.ajax({ 
      type : "POST", 
      dataType: 'json', 
      data: { 
       'filter': "John Portella" 
      }, 
      url : "@routes.Search.findPag()", 
      success: function(data){ 
       console.log(data); 
      } 
     }); 
     return false; 

控制器:POST /find/findPag Search.findPag()

public static Result findPag(){  
    JsonNode json = request().body().asJson(); 
    return ok(); 
} 

调试我得到JSON = NULL。你认为可能是这个问题? 谢谢。

回答

7

你必须要stringify的数据。因为现在我认为.toString()将在数据对象上被调用,并且这不是可以在服务器端正确解析为JSON的东西。

var d = { 'filter': "John Portella" }; 
$.ajax({ 
    type : "POST", 
    dataType: 'json', 
    data: JSON.stringify(d), 
    url : "@routes.Search.findPag()", 
     success: function(data){ 
      console.log(data); 
     } 
}); 
+0

哦,我以为你发送已经解析。谢谢 – JohnPortella 2013-05-11 13:03:15

1

你必须“contentType”数据。

var d = { 'filter': "John Portella" }; 
$.ajax({ 
    type : "POST", 
    dataType: 'json', 
    data: JSON.stringify(d), 
    contentType: "application/json; charset=utf-8", 
    url : "@routes.Search.findPag()", 
    success: function(data){ 
     console.log(data); 
    } 
});