Jquery和AJAX只发送第一行值

时间:2013-02-04 03:37:23

标签: jquery html ajax grails controller

我遇到了一些关于JQUERY和AJAX的问题。我先发布我的代码,

AJAX:

 $('#edittable').live('click', function() {
        $.ajax({
            url: URL,
            data: $(this).serialize(),
            type: "POST",
            success: function(html){

                $("#edit1").html(html).dialog("open")

             });
            },

            }
        });
        return false;
    });
  });

HTML:

<form id="edittable">
    <div style="height: 250px; overflow: scroll; width: 100%;">
        <table id="normal">
            <g:each in="${result}">
                <tr id="btn">
                    <td width=10%>
                        ${it.ID}
                    </td>
                    <td width=25%>
                        <span id="user">
                            ${it.username}
                        </span>
                        <input type="hidden" name="editusers" id="editusers"
                                value="${it.username}" readonly>
                    </td>
                </tr>
            </g:each>
        </table>
    </div>
</form>

我在这里要做的是,从表格(edittable)中检索隐藏的输入并将其发送回我的控制器。这是可行的,我的控制器检索它。但是,它只接收第一行值,即使我单击其他行,它仍然会收到第一行值。任何人都知道我该怎么做才能解决这个问题?谢谢你们。

4 个答案:

答案 0 :(得分:1)

我不知道grails,所以我只是在猜测:

<input type="hidden" name="editusers${it.ID}" value="{it.username}" readonly>`

您还需要使表中的其他ID唯一。可能您首先不需要<tr><span>元素中的ID。

答案 1 :(得分:1)

添加到@Barmer的答案 更改g:每个包含索引

    <g:each status="i" in="${result}">

使索引成为参数名称的一部分

    <input type="hidden" name="editusers[${i}]" value="${it.username}" readonly>

您应该能够将值列为params

中的列表
    params.editusers

答案 2 :(得分:0)

Use this to form data post
<script type="text/javascript">
var form_data = $('#edittable').serializeArray();
 $.ajax({
            url: URL,
            data: {post:form_data},
            type: "POST",
            success: function(html){

                $("#edit1").html(html).dialog("open")

             });
            }

</script>

答案 3 :(得分:0)

在成功函数中使用append而不是html

$("#edit1").append(html).dialog("open")