将隐藏字段传递给jquery

时间:2012-11-12 18:32:44

标签: c# jquery asp.net parameters hidden-field

我正在使用json在我的应用程序后面的代码中运行一个函数。一切正常,除了我无法弄清楚如何将隐藏字段传递给它这里是我的jquery代码:

  $(document).ready(function () {
             $("input[id$='btnP']").click(function (e) {
 var hiddenfield= $("#<%=hidden.UniqueID%>"); //This Does not work!!!!!
                 $.ajax({
                     type: "POST",
                     url: "MyDoc.aspx/BtnOpen",
                     data: "{'message': '" + hidden.val() + "'}",
                     contentType: "application/json; charset=utf-8",
                     dataType: "json",

                     success: function (msg) {
                         if (msg.d == 'Sent') {

                         }
                         else {

                         }
                     }

                 });

                 e.preventDefault();
             });

编辑:::

我的隐藏字段在gridview中如此:

 <asp:TemplateField HeaderText="View">                      
         <ItemTemplate>
    <input type="submit" value="Send" id="btnP"  runat="server" />
    <asp:HiddenField runat="server" ID="hidden"  Value='<%# Eval("ID" )%>'  />
           </ItemTemplate>
             </asp:TemplateField>

3 个答案:

答案 0 :(得分:2)

var hiddenfield= $("# ...

hidden.val()

该变量不称为hidden

答案 1 :(得分:2)

你应该这样做

 $(document).ready(function () {
         $("input[id$='btnP']").click(function (e) {

             var hiddenfieldValue = $("#<%=hidden.ClientID %>").val(); //This works!!!!!

             $.ajax({
                 type: "POST",
                 url: "MyDoc.aspx/BtnOpen",
                 data: {"message": hiddenfieldValue},
                 contentType: "application/json; charset=utf-8",
                 dataType: "json",

                 ...
             });

             e.preventDefault();
         });

答案 2 :(得分:2)

有几个选项可以采用隐藏字段值:

1)您可以将隐藏字段的ClientIDMode属性设置为静态

<asp:HiddenField runat="server" ID="hidden" ClientIDMode="Static" Value="yourValue"/>

然后您可以使用以下代码:

var hiddenField = document.getElementById('hidden');
....
hiddenField.value

2)使用ClientID属性:

var hiddenField = $("#<%=hidden.ClientID %>");
...
hiddenField.val();

了解ClientID与UniqueID here

之间的区别

<强> UPD。

如果需要将某些参数从GridView传递给函数,则不能使用HiddenField:

只需从输入中删除“server”标记,然后添加onclick事件即可。

<asp:TemplateField HeaderText="View">                      
    <ItemTemplate>
       <input type="submit" value="Send" id="btnP" onclick="BtnOpen('<%# Eval("ID" ) %>');" />
    </ItemTemplate>
</asp:TemplateField>

而不是添加你的功能:

<script>
    function BtnOpen(id) {
        $.ajax({
            type: "POST",
            url: "MyDoc.aspx/BtnOpen",
            data: "{'message': '" + id + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",

            success: function (msg) {
                if (msg.d == 'Sent') {

                }
                else {

                }
            }
        });
    }
</script>