2012-06-25 48 views
4

我提出以下AJAX请求:如何在我的控制器中访问POST变量?

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

经过路径:

POST /route controllers.Test.readPost() 

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

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

我找不到在文档中这样做的简单方法。它只说明如何从JSON请求中获取值。

回答

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

当然它会通过PARAMS通过URL,所以它不适合每个值,但在许多地方,它将足够足够的发送POST请求与AJAX。当然javascriptRoutes创建类型设置在routes文件中的请求。

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

+0

工作就像一个魅力。这是记录的吗? – Jivings

+0

DynamicForm记录在API http://www.playframework.org/documentation/api/2.0.1/java/index.html?play/data/package-summary.html中,据我所知,没有官方doc for javascriptRoutes yet – biesior

+0

那里没有很多信息。 – Jivings

-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) 
+0

这与问题完全无关。我问的是'play framework',POST不GET。 – Jivings

相关问题