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();
             });

編集:::

私の隠しフィールドは、グリッドビューに次のように表示されます。

 <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
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 に答える
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を使用できません。

入力から「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>
于 2012-11-12T19:51:30.977 に答える