2012-06-25 4 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); 
} 

Существует и другая возможность построить AJAX запрос и передать аргументы через javascriptRoutes: https://stackoverflow.com/a/11133586/1066240

Конечно, это будет проходить Params по URL-адресу, поэтому он не подходит для каждого значения, но во многих местах он будет достаточно для отправки запросов POST с помощью AJAX. Конечно javascriptRoutes создать запрос с типом, установленным в файле routes.

BTW: было бы лучше, если бы вы написали, какую версию вы используете.

+0

Работал как шарм. Это документировано? – Jivings

+0

DynamicForm задокументирован в API http://www.playframework.org/documentation/api/2.0.1/java/index.html?play/data/package-summary.html, насколько мне известно, нет официального doc для javascriptRoutes еще – 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

Смежные вопросы