如何在控制器中访问POST变量?

时间:2012-06-25 14:26:48

标签: java post playframework playframework-2.0

我正在制作以下AJAX请求:

$.post('/route', {
    arg1 : 'foo',
    arg2 : 'bar'
});

通过路线:

POST   /route    controllers.Test.readPost()

如何在控制器的方法中访问这些POST变量?

public static Result readPost() {
    return TODO; // read post variables
}

我在文档中找不到一种简单的方法。它仅说明如何从JSON请求中获取值。

2 个答案:

答案 0 :(得分:9)

使用DynamicForm

public static Result getValues(){
    DynamicForm requestData = form().bindFromRequest();

    String name = requestData.get("name");
    String desg = requestData.get("desg");
    // etc

    return ok("You sent: " + name + ", " + desg);
}

还可以通过javascriptRoutes构建AJAX查询并传递参数:https://stackoverflow.com/a/11133586/1066240

当然它会通过URL传递params,因此它并不适合每个值,但在很多地方它足以用AJAX发送POST请求。当然javascriptRoutes使用routes文件中设置的类型创建请求。

顺便说一句:如果您编写了正在使用的版本,那就更好了。

答案 1 :(得分:-2)

你可以使用GET和ajaxRequest。更多信息可以在http://www.javascriptkit.com/dhtmltutors/ajaxgetpost.shtml

找到
var mygetrequest=new ajaxRequest()
mygetrequest.onreadystatechange=function(){
 if (mygetrequest.readyState==4){
  if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){
   document.getElementById("result").innerHTML=mygetrequest.responseText
  }
  else{
   alert("An error has occured making the request")
  }
 }
}
var namevalue=encodeURIComponent(document.getElementById("name").value)
var agevalue=encodeURIComponent(document.getElementById("age").value)
mygetrequest.open("GET", "basicform.php?name="+namevalue+"&age="+agevalue, true)
mygetrequest.send(null)