我正在制作以下AJAX请求:
$.post('/route', {
arg1 : 'foo',
arg2 : 'bar'
});
通过路线:
POST /route controllers.Test.readPost()
如何在控制器的方法中访问这些POST变量?
public static Result readPost() {
return TODO; // read post variables
}
我在文档中找不到一种简单的方法。它仅说明如何从JSON请求中获取值。
答案 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)