【问题标题】:How do I access POST variables in my controller?如何访问控制器中的 POST 变量?
【发布时间】:2012-06-26 19:41:00
【问题描述】:

我正在发出以下 AJAX 请求:

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

通过路线:

POST   /route    controllers.Test.readPost()

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

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

我在文档中找不到执行此操作的简单方法。它仅说明如何从 JSON 请求中获取值。

【问题讨论】:

    标签: java post playframework playframework-2.0


    【解决方案1】:

    您可以将 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)
    

    【讨论】:

    • 这与问题完全无关。我在问play framework,而 POST 不是 GET。
    【解决方案2】:

    使用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);
    }
    

    还有其他可能构造 AJAX 查询并通过 javascriptRoutes 传递参数:https://stackoverflow.com/a/11133586/1066240

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

    顺便说一句:如果你写了你正在使用的版本会更好。

    【讨论】:

    猜你喜欢
    • 2017-09-22
    • 1970-01-01
    • 2016-10-14
    • 2013-05-28
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 2015-12-18
    • 2015-09-15
    相关资源
    最近更新 更多