gpt4 book ai didi

java - 如何在 Play Framework 中使用 POST 参数?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:58:38 25 4
gpt4 key购买 nike

我正在尝试使用 JavaScript 路由发出 POST 请求。在路由文件中:

POST /comments controllers.Clients.addComment(text: String, client: Int)
GET /assets/javascripts/routes controllers.Application.javascriptRoutes()

在页面上:

jsRoutes.controllers.Clients.addComment(args.text, @client.id).ajax(...);

但是它创建了请求

POST http://localhost:9000/comments?text=qwe&client=1 HTTP/1.1

如何让它在 POST 主体中传递参数而不是请求字符串?

最佳答案

看看ajax() documentation - 也就是这样的例子:

$.ajax({
type: "POST",
url: "some.php",
data: { name: "John", location: "Boston" }
});

作为Play JavaScript 路由已经定义了 url和请求方法( type ),你只需要添加 data (当然你不需要将它们指定为括号中的参数)

jsRoutes.controllers.Clients.addComment().ajax(
data: {
client: @client.id,
text: args.text
}
);

您也可以只向给定的客户端发送文本(由 URL 决定(它可以是 POSTPUT 看起来更好 :)):

PUT /comments/:client     controllers.Clients.addComment(client: Int)

在 View 中:

jsRoutes.controllers.Clients.addComment(@client.id).ajax(
data: { text: args.text }
);

因此它将对 http://domain.tld/comments/123 执行 PUT 请求和 text将在 form() 中提供因为它是用 POST 发送的:

public static Result addComment(int client) {
String receivedText = form().bindFromRequest().get("text");
// save it to DB ...
return ok( "Added comment: "+ receivedText+ ". for client id: " + client);
}

关于java - 如何在 Play Framework 中使用 POST 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12835440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com