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和 aparams.template

还要注意控制器名称上的小写首字母 - 在 Grails 中,NewReportController访问方式为newReport

于 2012-11-20T00:20:22.690 回答