3

Play 2.0 フレームワークを使い始めたばかりです。ajaxベースのフォーム送信を行う最良の方法は何だろうか. 現在、私のページには、(フォームの) 新しいエントリが表示されるフォームと下のリストが含まれています。ajaxによる投稿とリストの更新を行いたいです。

しかし、私の最初の質問は、ajax を介してフォームを送信し、フォーム バインディングとコントローラーの検証を使用する方法です。それは可能ですか?これを行う正しい方法は何ですか?

ありがとう、

4

2 に答える 2

6

私見では、play の JavaScript ルーティング機能、js 検証 (jquery バリデータ プラグインなど)、およびサーバー側の検証を使用できます。まず、ドメイン オブジェクトとして機能するケース クラスを宣言します。

case class SimpleUser( name: String, email: String )

次に、フォームと機能を備えたコントローラーを作成します。

object Users extends Controller{
    //validation 1 goes here
    val userForm = Form(
        mapping(
            "name" -> text,
            "email" -> email
        )(SimpleUser.apply)(SimpleUser.unapply)
    )

    def save = Action { implicit request =>
        userForm.bindFromRequest().fold(
            formWithErrors => {
                BadRequest( "uuuups" ) 
            },
            user => {
                //validation 2 goes here
                Ok( "ok" )
            }
        )
    }
}

これを取得したら、ルートファイルにエントリを追加します

POST    /users/save controllers.Users.save
GET     /jsroutes   controllers.Application.javascriptRoutes

およびアプリケーションコントローラーで

def javascriptRoutes = Action { implicit request =>
    import routes.javascript._
    Ok(
        Routes.javascriptRouter("jsRoutes")(
            Users.save
    ) ).as("text/javascript")
}

そして今、JavaScriptの部分

(...)
save: function(){
    jsRoutes.controllers.Users.save().ajax( {
        data: jQuery( 'form' ).serialize(),
        success: function( data ){
            //refresh users' list
        },
        error: function( data ){
            console.log( data.responseText );
        }
    });
}

これは単純な例ですが (コンパイルはしていません)、アイデアを示しています。

于 2013-06-21T21:13:19.707 に答える
4

最速の方法は jQuery です。フォームをシリアル化し、一般的なjQuery.ajaxで送信するだけです。応答として、メソッドは ie を含む JSON データを送信する必要があります。カスタムステータスなどの新しいアイテムやその他のもの。

于 2012-12-07T14:45:43.873 に答える