【问题标题】:Grails ajax jquery is not workingGrails ajax jquery 不工作
【发布时间】:2013-08-10 14:08:49
【问题描述】:

我正在尝试在我的 grails 应用程序中提交 jquery Ajax 表单。但它没有将结果保存到数据库中。我正在使用动态表单字段,用户可以在其中添加或删除任意数量的文本字段。

<script>
  $(document).ready(function() {
  $("#add").click(function() {
    var intId = $("#buildyourform div").length + 1;
    var fieldWrapper = $("<div class=\"fieldwrapper\" name=\"field" + intId + "\" id=\"field" + intId + "\"/>");
    var fName = $("<input type=\"text\" name=\"name" + intId + "\" class=\"fieldname\" id=\"tb"+ intId +"_1\"/>");
    var lname = $("<input type=\"text\" name=\"email" + intId + "\" class=\"lastname\" id=\"tb"+ intId +"_2\"/>");
    var removeButton = $("<input type=\"button\" class=\"remove\" value=\"-\" />");
    removeButton.click(function() {
        $(this).parent().remove();
    });
    fieldWrapper.append(fName);
    fieldWrapper.append(lname);
    fieldWrapper.append(removeButton);
    $("#buildyourform").append(fieldWrapper);

}); 

});

</script>

<form action="#" id="input_form">
   <fieldset id="buildyourform">
      <legend>Build your own form!</legend>
   </fieldset> <input type="submit" value="send" name="submit" />
</form>

<input type="button" value="Add a field" class="add" id="add" />

<p id="result"></p>

这样 jquery 将根据“添加字段”按钮的 onclick 功能添加文本字段的数量。

现在我正在尝试使用 jquery Ajax 调用提交我的表单。像这样..

<script type="text/javascript">
     $(document).ready(function(){
         $("#input_form").submit(function(){
             var querystring = $(this).serialize();

             $.ajax({
                    url : "/peeldemo/customer/saveparams",
                    data : "data=" + querystring,
                    success : function(data) {
                        alert("Submit Successfully !!");
                        $('#result').html(data);
                        return false;
                    }
             })

             });
    });
</script>

这是我的控制器 --

    def saveparams() {

    def paramToAddList = params.data
    String[] pramsToAdd = paramToAddList.split("&")
    int addParamsSize = pramsToAdd.size()
    if (addParamsSize) {
        //List<Parameter> paramListToDelete = new ArrayList<Parameter>()
        for(int i=0;i<addParamsSize;i++){
            def customer = new Customer();
            customer.name = pramsToAdd[i].name
            customer.email = pramsToAdd[i].email
            customer.save()

        }
    }
    }

但我的表单在点击提交按钮后无法提交。

【问题讨论】:

    标签: javascript jquery grails grails-2.0


    【解决方案1】:

    我复制你的代码并测试它

    name3:c, data:name1=a, name2:b, email1:1, email2:2, email3:3, action:saveparams,
    

    这是我在操作中得到的参数,这里的数据只有name1=a。我添加了三个条目。

    并得到以下错误

    No such property: name for class: java.lang.String. Stacktrace follows: Message: No such property: name for class: java.lang.String
    

    所以我更改了你的代码以使其工作

    <script>
        $(document).ready(function() {
            $("#add").click(function() {
                var intId = $("#buildyourform div").length;
                var fieldWrapper = $("<div class=\"fieldwrapper\" name=\"field" + intId + "\" id=\"field" + intId + "\"/>");
                var fName = $("<input type=\"text\" name=\"name\" class=\"fieldname\" id=\"tb"+ intId +"_1\"/>");
                var lname = $("<input type=\"text\" name=\"email\" class=\"lastname\" id=\"tb"+ intId +"_2\"/>");
                var removeButton = $("<input type=\"button\" class=\"remove\" value=\"-\" />");
                removeButton.click(function() {
                    $(this).parent().remove();
                });
                fieldWrapper.append(fName);
                fieldWrapper.append(lname);
                fieldWrapper.append(removeButton);
                $("#buildyourform").append(fieldWrapper);
    
            });
    
        });
    
    </script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("#input_form").submit(function(){
                var querystring = $("#input_form").serialize();
    
                $.ajax({
                    url : "/admin/saveparams",
                    data : querystring,
                    success : function(data) {
                        alert("Submit Successfully !!");
                        $('#result').html(data);
                        return false;
                    }
                })
                return false;
            });
        });
    </script>
    
    <form action="#" id="input_form">
        <fieldset id="buildyourform">
            <legend>Build your own form!</legend>
        </fieldset> <input type="submit" value="send" id="asdasd" name="submit" />
    </form>
    
    <input type="button" value="Add a field" class="add" id="add" />
    
    <p id="result"></p>
    

    这是我的行动

    def saveparams() {
        def paramToAddList = params.list('name')
        def paramToAddList1 = params.list('email')
    
        println "----------------1----${paramToAddList}"
        println "----------------11----${paramToAddList1}"
    
        if (paramToAddList) {
            for (int i = 0; i < paramToAddList.size(); i++) {
                println "-----------------------${paramToAddList[i]}---${paramToAddList1[i]}---"
            }
        }
        render params
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 2010-12-23
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多