2009-05-06 8 views
42

jQuery에서 호출 한 .NET webmethod가 있습니다. 이 메소드는 DIV 요소 내에 표시되는 HTML 마크 업을 반환합니다. 내가JSON에서 .d는 무엇을 의미합니까?

$("#div").html(result.d); 

내 질문은의 .D 무엇을합니까 응답을 사용하면

? 나는 완전히 이해하지 못하는 코드를 사용하는 것을 좋아하지 않는다? Eval을 사용하여 동일한 결과를 얻을 수 있습니까?

+0

관련 항목 : http : // stackov erflow.com/questions/739859/returning-html-from-json-webservice-what-is-the-d –

+0

관련 : http://stackoverflow.com/questions/2811525/removing-the-d-object-from- asp-net-web-service-json-output주의이 질문에 대한 나의 VTC에 대한 나의 견해를 바 꾸었습니다.이 질문은 더 새롭음에도 불구하고 더 초점이 맞추어졌고 더 나은 대답을 가지고 있습니다. –

답변

22

ADO.NET Data Services는 무엇입니까?

나는이를 반환하는 JSON에 대한 프리젠 테이션을 듣고 기억 나는 에 그것의 단지 래퍼는 페이로드 (여러 개체를 반환하는 경우이다) 배열에 반대 JSON 개체인지 확인 생각합니다.

특별히 'd'가 아닌 이유는 무엇입니까? 나는 그들이 '뭔가 있어야만한다'고 말하는 것을 기억한다고 생각합니다.

+0

그게 사실이라면 나는 그것이 B, C가 될 수 있다고 생각하지만 그들은 추측 할 수있는 이유가 없다.) Microsoft가 ASP.NET에서 추가 한 보안 기능은 ASP.NET AJAX의 JSON 응답 캡슐화 버전이다. 부모 개체 내에서. – Microtechie

+5

데이터에 대해 'd'라고 생각합니다. – xr280xr

+3

이것을 제거하거나 변경하는 이유가 있습니까? 당신이 통제하지 않는이 무작위 "d"매개 변수에 따라 너무 많은 JS를 갖는 것은 불안합니다. 어떤 버전이 "f"로 변경하면 어떨까요? – mmcrae

0

개체 'result'에 'd'필드의 값을 반환합니다.

This question은 JSON이 어떻게 표시되는지 예를 표시하며 d: 필드를 확인하십시오.

0

d는 .NET 코드에서 반환 한 결과 중 일부입니다. 이 코드를 보면 이름이 d 인 변수가 있어야합니다. 직렬화 된 클래스에서 생성 된 경우 아마도 d라는 이름의 해당 클래스 멤버를 전송하게됩니다.

+0

제 방법은 단지 문자열을 반환합니다. "blablabla"를 반환하십시오. D 세트는 어디에 있습니까? – Fermin

+1

"d"를 바꾸거나 없앨 수 있습니까? – mmcrae

0

다른 사람들은 지적했듯이 "result" 개체의 "d" 멤버를 반환합니다.
당신은 당신이 사용할 수있는 변수에 "d"을하고 싶었 경우

var property = "d"; 
var value = result[property]; 
7

를 통해 액세스 할 수 있습니다 JSON Web Service And jQuery with Visual Studio 2008

웹 메소드는 직렬화가 제품을 반환 d를 JSON 형식으로 입력하십시오. JSON 유형이 없으므로 반환 값은 String이고 JSON 형식입니다.

클라이언트 측에서 ajax 호출은 JSON을 리턴합니다.

결과는 보이는

{d: 'returned-string-with-JSON-format'} 같은 정확히 뭔가 같은 : 당신이 result.d.ID하지'returned-string-with-JSON-format' 문자열이 아닌 JSON 객체입니다 {d:'{"ID":123,"Name":"Surface Pro 2"}'}

하는 것으로.

대신 당신이 말 JSON.parse(result.d) 또는 eval(result.d)

를 사용하여 JSON 객체로 변환 할 필요가, 당신이 정말로 원하는 것은이 작업을 수행 할 수 있습니다 :

result = JSON.parse(result.d) 

UPDATE 는 또한이 데모를 고려, 여기서 JSON을 문자열 형식으로 사용하여 JSON 객체로 변환합니다.

enter image description here

여기
+3

"d"를 바꾸거나 없앨 수 있습니까? – mmcrae

+0

@mmcrae 예, 응답에 직접 작성하는 것이 가능합니다. 가이드는 다음과 같습니다. https://stackoverflow.com/a/25263102/1252036 –

2

ASPX 코드 : 여기

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent"> 
    <script type="text/javascript"> 


     function GetData() 
     { 
      alert("I am called"); 
       $.ajax({ 
        type: "POST", 
        url: "Contact.aspx/GetProducts", 
        data: "{}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function (result) { 


         var data = JSON.parse(result.d) 
         alert(data.Id); 

        }, 
        error:function(ex) 
        { 
         alert("Test"); 
        } 
       }); 
     } 
    </script> 

    <asp:TextBox ID="txtName" runat="server"></asp:TextBox> 

    <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="GetData();" /> 
</asp:Content> 

C# 코드 :.

public partial class Contact : Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       BindList(); 
      } 
      int[] arr1 = new int[] { 1, 2 }; 
      ListBox1.SelectedValue = "1"; 
      ListBox1.SelectedValue = "4"; 


     } 

     void BindList() 
     { 

      List<Product> lst = new List<Product>() 
      { 
       new Product{Id=1,Name="Photo"}, 
       new Product{Id=2,Name="Photo"}, 
       new Product{Id=3,Name="Photo"}, 
       new Product{Id=4,Name="Photo"} 
      }; 
      ListBox1.DataSource = lst; 
      ListBox1.DataTextField = "Name"; 
      ListBox1.DataValueField = "Id"; 
      ListBox1.DataBind(); 
     } 


     [WebMethod] 
     public static string GetProducts() 
     { 
      // instantiate a serializer 
      JavaScriptSerializer TheSerializer = new JavaScriptSerializer(); 

      //optional: you can create your own custom converter 
      // TheSerializer.RegisterConverters(new JavaScriptConverter[] { new MyCustomJson() }); 

      //var products = context.GetProducts().ToList(); 
      Product products = new Product() { Id = 1, Name = "Testing Services" }; 
      var TheJson = TheSerializer.Serialize(products); 

      return TheJson; 
     } 

    } 
+1

코드에 설명을 추가하면 항상 도움이됩니다. – Bowdzone

0

그것은 매우 분명하다 $ ("# div에") HTML (result.d) 그; 귀하의 코드에

"result"는 개체이고 "d"는 "result"속성입니다.

설명하자,

이 같은 객체를 생성하는 경우,

var result{"id": "number", "d": "day"}; 

우리는 결과의 속성에 액세스하는 경우는

$("#div").html(result.d); 

그래서 우리는 결과를 얻을 수 JQuery와

를 사용하는 HTML이에 있다는 것입니다

<html>day</html>