使用ajax获取所有行值

时间:2014-12-26 14:43:48

标签: javascript jquery ajax

在下面的代码中,我有一个包含textboxdropdownlist的表,我可以动态创建新行。

现在我想得到所有的行值。我尝试了以下代码,但它只获得第一行。

$(function () {
    $("#Button1").click(function (event) {

        // Prevents Form Submission as you want to save data via AJAX
        event.preventDefault();

        $.ajax({
            type: "POST",
            url: "NewFile.aspx/InsertData",
            data: "{'Quantity':'" + $("#<%=txtQty.ClientID%>").val() + "','ProductID':'" + $("#<%=ddlProduct.ClientID%>").val() + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: "true",
            cache: "false",
            success: function (msg) {
                alert("Success");
                // On success
            },
            Error: function (x, e) {
                alert("Fail");
                // On Error
            }
        });
    });
})

<table id="dataTable" width="350px" border="1" runat="server">
    <tr>
        <td><input id="checkbox" type="checkbox" name="chk" runat="server"/></td>
        <td><input type="text" name="txt" id="txtQty" runat="server"/></td>
        <td>
            <asp:DropDownList ID="ddlProduct" runat="server"  Style="width: 100%; height:23px" ></asp:DropDownList>   
        </td>
    </tr>
</table>   

<asp:Button ID="Button1" Text="Save  New" type="submit" ClientIDMode="Static" runat="server"></asp:Button>

1 个答案:

答案 0 :(得分:0)

您似乎正在使用ASP.NET生成表。 $(&#34;#&lt;%= item.ClientID%&gt;&#34;)为您提供单个项目。我发现使用$(&#39; [id * =&#34; item&#34;]&#39;)查找生成的ASP.NET id中包含特定文本的对象非常有用。如果您的所有文本框的ID都包含相同的文本,则可以获得一系列txtQty值,如下所示:

var values = $('[id*="txtQty"]').map(function(index) {
    return $(this).val(); 
});

您可以类似地找到其他值。

更新

data: { 
         quantites: $('[id*="txtQty"]').map(function() { return $(this).val(); }),
         // ...
}

更新(根据@ charlietfl&#39;评论)

var rows = $("#<%=dataTable.ClientID%> tr").map(function() {
    return {
        quantity: $(this).find('[id*="txtQty"]').val(),
        // ...
    };
});