1

私はgrailsとjqueryが初めてです。

この例のような jquery ダイアログを作成しました: http://jqueryui.com/dialog/#modal-form

ダイアログを開き、データを入力し、メイン ページのテーブルにデータを表示します。

テーブルは動的です。すべてのエントリをテーブルに追加した後、すべてのデータをデータベースに保存する保存ボタンを作成したいと思います。私の質問は、テーブル内のすべてのデータをコントローラーに渡して、コントローラーができるようにする方法です。データを永続化しますか?

ここに私のgspがあります:

        <fieldset class="form">
            <h2>ReportInstance</h2>
            <table id="reportInstances" class="ui-widget ui-widget-content">
                <thead>
                    <tr>
                        <th>Name</th>
                        <th>Template</th>
                    </tr>
                </thead>
                <tbody>
                </tbody>
            </table>
            <button id="create_new_reportInstance">Create new Report
                Instance</button>
        </fieldset>

        <fieldset class="buttons">
            <g:submitToRemote controller="NewReport" action="saveReport"
                update="page-body" value="save" />
        </fieldset>
    </g:form>


 javascript:

           $("#dialog-form").dialog(
               {
                autoOpen : false,
                    height : 300,
                    width : 350,
                    modal : true,
                buttons : {
                 "Create an account" : function() {
                          var bValid = true;
                           allFields.removeClass("ui-state-error");
                                if (bValid) {
                                    $("#reportInstances    tbody").append(
                                    "<tr>" + "/<td>" + name.val() + "/</td>"
                                            + "/<td>" + template.val()
                                            + "/</td>" + "/<td>" + "/</tr>");

                            $(this).dialog("close");
                        }
                    },
                    Cancel : function() {
                        $(this).dialog("close");
                    }
                },
                close : function() {
                    allFields.val("").removeClass("ui-state-error");
                }
            });

    $("#create_new_reportInstance").button().click(function() {
        $("#dialog-form").dialog("open");
    });

name.val() と template.val() をコントローラーに渡したいだけです

4

1 に答える 1

1

私はまったく使用しませんsubmitToRemote。すでに jQuery を使用しているため、これを Ajax 経由で投稿できます。

if(bValid) {
    $.ajax({
        url: "/yourApp/newReport/saveReport",
        type: "POST",
        data: {"name": name.val(), "template": template.val()},
        success: function(data) {
            $("#reportInstances tbody").append( "" + "/" + name.val() + "/" + "/" + template.val() + "/" + "/" + "/");
            $(this).dialog("close");
        },
        error: function(xhr, textStatus, error){
           //whatever you need to do here - output errors etc.
           console.log(xhr.statusText);
           console.log(textStatus);
           console.log(error);
        }

    });
}

コントローラーでは、 aparams.nameと aを取得しますparams.template

また、コントローラー名の最初の文字が小文字であることにも注意してください。Grails では、次のようNewReportControllerにアクセスされます。newReport

于 2012-11-20T00:20:22.690 に答える