2009-05-06 16 views
42

मेरे पास एक .NET वेबमाइड है जिसे मैंने jQuery से बुलाया है। विधि कुछ HTML मार्कअप देता है जो मैं एक डीआईवी तत्व के भीतर प्रदर्शित करता हूं।JSON में .d का क्या अर्थ है?

एक बार मैं है प्रतिक्रिया मैं

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

मेरा प्रश्न है, .D क्या करना है का उपयोग करें? मुझे कोड का उपयोग करना पसंद नहीं है जो मैं पूरी तरह से समझ नहीं पा रहा हूं? क्या मुझे इवल का उपयोग करके एक ही परिणाम मिल सकता है?

+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- एएसपी-नेट-वेब-सर्विस-जेसन-आउटपुट एनबी मैंने इस प्रश्न पर अपने वीटीसी पर अपनी राय बदल दी है - नए होने के बावजूद यह सवाल अधिक केंद्रित है और –

उत्तर

22

क्या आप एडीओ.NET डेटा सेवाओं का जिक्र कर रहे हैं?

मैं JSON के बारे में एक प्रस्तुति सुनवाई इस वापस लौटने याद है और मुझे लगता है कि इसकी सिर्फ करने के लिए एक आवरण सुनिश्चित पेलोड एक JSON ऑब्जेक्ट के रूप में एक सरणी के लिए विरोध किया (जो विभिन्न इकाइयों लौटने का मामला है) है।

क्यों 'डी' विशेष रूप से? मुझे लगता है कि मुझे याद है कि कुछ ऐसा कह रहा है 'अच्छा यह कुछ होना था'।

+0

यह सच है, मुझे लगता है कि यह ए, बी या सी हो सकता है लेकिन वे डी चुनते हैं (मुझे लगता है कि इसके पीछे कोई कारण नहीं है) केवल एक सुरक्षा सुविधा है जिसे माइक्रोसॉफ्ट ने जेएसओएन प्रतिक्रिया को एन्सेप्लेट करके एएसपी.NET AJAX के एएसपी.NET 3.5 + संस्करण में जोड़ा एक मूल वस्तु के भीतर। – Microtechie

+5

मुझे लगता है कि डेटा के लिए 'डी' – xr280xr

+3

क्या इससे छुटकारा पाने या इसे बदलने का कोई कारण है? यह यादृच्छिक "डी" पैरामीटर के आधार पर इतना जेएस रखने के लिए परेशान नहीं है जिसे आप नियंत्रित नहीं करते हैं। क्या होगा यदि कुछ संस्करण इसे "एफ" में बदल देता है? – mmcrae

0

यह ऑब्जेक्ट 'result' में 'd' नामक फ़ील्ड का मान देता है।

This question JSON देख सकता है कि कैसे एक उदाहरण दिखाता है, d: फ़ील्ड को नोटिस करें।

0

डी आपके .NET कोड द्वारा दिए गए परिणाम का हिस्सा है। यदि आप इस कोड को देखते हैं तो आपको नाम डी के साथ एक चर सेट किया जाना चाहिए। यदि यह धारावाहिक वर्गों से उत्पन्न होता है, तो यह शायद उस वर्ग के सदस्य के साथ नाम डी के साथ भेजता है।

+0

बेहतर जवाब है मेरी विधि सिर्फ एक स्ट्रिंग देता है, उदाहरण के लिए वापसी "blablabla"। डी सेट कहां है? – Fermin

+1

क्या यह बदलना संभव है या "डी" से छुटकारा पाएं? – mmcrae

0

जैसा कि अन्य ने बताया है, यह "result" ऑब्जेक्ट का सदस्य देता है।
आप आप इस इस्तेमाल कर सकते हैं एक चर में "d" करना चाहते थे, तो:

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

जो लोग वास्तव में खरोंच से आवरण वर्ग के बारे में एक उदाहरण सीखना चाहते हैं के लिए बहुत उपयोगी लिंक हो सकता है, जहां एक वर्ग में विवरण कर सकते हैं कभी नहीं अन्य वर्ग के लिए dislosed जा लेकिन परोक्ष रूप से विभिन्न तरीकों http://www.c-sharpcorner.com/Blogs/12038/wrapper-class-in-C-Sharp.aspx

7

इस ट्यूटोरियल के आधार पर के माध्यम से पहुँचा जा सकता है: JSON Web Service And jQuery with Visual Studio 2008

वेब विधि एक उत्पाद है कि serialize है रिटर्न जेएसओएन प्रारूप में डी। चूंकि JSON प्रकार नहीं है, इसलिए लौटा मूल्य JSON प्रारूप के साथ String है।

ग्राहक पक्ष पर, AJAX कॉल एक JSON देता है।

परिणाम लग रहा है {d: 'returned-string-with-JSON-format'} तरह

अधिक वास्तव में की तरह कुछ: {d:'{"ID":123,"Name":"Surface Pro 2"}'}

ध्यान दें कि 'returned-string-with-JSON-format' एक स्ट्रिंग एक JSON वस्तु नहीं है तो आप result.d.ID ऐसा नहीं कर सकते हैं।

इसके बजाय आप JSON ऑब्जेक्ट के लिए यह JSON.parse(result.d) या eval(result.d)

का उपयोग कर अंत में से कन्वर्ट करने के लिए की जरूरत है, क्या आप वास्तव में चाहते हैं यह करने के है:

result = JSON.parse(result.d) 

अद्यतन इसके अलावा इस डेमो पर विचार करें, जहां मैं स्ट्रिंग प्रारूप में JSON का उपयोग करता हूं और इसे JSON ऑब्जेक्ट में परिवर्तित करता हूं:

enter image description here

+3

क्या यह बदलना संभव है या "डी" से छुटकारा पाएं? – 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> 

सी # यहाँ कोड:।

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") एचटीएमएल (result.d); आपके कोड में

"परिणाम" एक वस्तु है और डी "परिणाम" की संपत्ति है।

चलो समझाने,

अगर आप इस तरह वस्तु बनाने,

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

अगर हम परिणाम की संपत्ति का उपयोग एचटीएमएल है कि jQuery

का उपयोग कर
$("#div").html(result.d); 

तो हम परिणाम प्राप्त है

<html>day</html> 
संबंधित मुद्दे