3

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本文でパラメータを渡すようにするにはどうすればよいですか?

4

2 に答える 2

9

ajax()のドキュメントを見てください-つまり、そのような例:

$.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によって決定されます(URLによって決定されますがPOSTPUT見栄えが良くなります:)):

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

ビューで:

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

したがって、PUT要求を実行し、POSTで送信されたとおりに使用できるようになりますhttp://domain.tld/comments/123textform()

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);
}
于 2012-10-11T09:36:52.207 に答える
0

PlayのJsRoutesをよく理解していないので、私がしたことは次のとおりです。

私からしてみれば:

var client = 1;

$.ajax({
    type: "POST",
    url: "/comments/" + client,
});

そして私のルートでは、メソッドの呼び出し:

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

これにより、ブラウザは、ルートで定義されたURLへの通常のajax呼び出しのようにリクエストを行うことができます。

于 2016-05-13T15:01:07.867 に答える