0

我正在使用 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>
4

3 回答 3

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 之间的区别

UPD。

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

只需从您的输入中删除“服务器”标签并添加 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>
于 2012-11-12T19:51:30.977 回答
2
var hiddenfield= $("# ...

hidden.val()

变量未被调用hidden

于 2012-11-12T18:34:16.347 回答
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();
         });
于 2012-11-12T18:38:12.847 回答