2012-11-12 3 views
0

json을 사용하여 앱의 코드 숨김 기능을 사용하고 있습니다. 모든 것이 여기 내 jQuery 코드입니다에 숨겨진 필드를 전달하는 방법을 알아낼 수 없습니다 난을 제외하고 잘 작동 :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> 

답변

2

숨겨진 필드 값 취할 몇 가지 옵션이 있습니다 :)

1 정적에 숨겨진 필드의 ClientIDMode 속성을 설정할 수는

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

다음 코드를 사용할 수 있습니다.

var hiddenField = document.getElementById('hidden'); 
.... 
hiddenField.value 
및 된 ClientID을 UniqueID here

UPD의 차이에 대해

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

판독 : 6,

2) 된 ClientID 속성을 사용한다. 당신이 함수에의 GridView에서 몇 가지 매개 변수를 전달해야하는 경우

, 당신은에 HiddenField을 사용할 수 없습니다 :

는 그냥 입력에서 "서버"태그를 제거하고 온 클릭 이벤트를 추가합니다.

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

그리고 당신의 기능 추가보다는

:`BtnOpen`는 ASP.NET 웹 방식의 경우

<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> 
+0

나는 이것을 시도했지만 알 수없는 항목을 말합니다. 유일한 문제는 내 숨겨진 필드가 gridview 내부에 있다는 것입니다. – Zaki

+0

@ Sam1 ok.그것은 또 다른 질문 일뿐입니다. 이 경우에는 숨겨진 필드를 사용할 필요가 없습니다. –

2
var hiddenfield= $("# ... 

hidden.val() 

변수가 hidden으로 지정되지 않았습니다.

+0

IIRC는, 질문자는 data''에서 원시 개체를 전달할 수 없습니다. 이 경우에는 문자열이어야합니다. –

+0

@ FrédéricHamidi 나는 그것에 익숙하지 않다. 나는'data'의 문자열 형식에 대한 구문을 추가했습니다. –

+0

실제로 쿼리 문자열 일 수는 없습니다. 그것은 JSON 문자열 (''{ 'message': ' "+ hiddenfield.val() +"'} "'참으로)이어야합니다. 자세한 내용은 [이 Encosia 기사] (http://encosia.com/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/)를 참조하십시오. –

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

'숨김 '이란 무엇입니까? –

+0

미안합니다'hiddenfield' – codingbiz

+0

'hiddenfield'는 이미 jquery 객체이므로 재 포장 할 필요가 없습니다. –