簡體   English   中英

JSON 中的 .d 是什么意思?

[英]What does .d in JSON mean?

我有一個從 jQuery 調用的 .NET webmethod。 該方法返回一些我在 DIV 元素中顯示的 HTML 標記。

一旦我得到我使用的回應

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

我的問題是,.d 有什么作用? 我不喜歡使用我不完全理解的代碼? 我可以使用 Eval 得到相同的結果嗎?

您指的是 ADO.NET 數據服務嗎?

我記得聽過一個關於 JSON 返回這個的演示,我認為它只是一個包裝器,以確保有效負載是一個 JSON 對象,而不是一個數組(這是返回多個實體的情況)。

為什么是“d”? 我想我記得他們說過類似“好吧,它必須是某種東西”之類的話。

基於本教程: JSON Web Service 和 jQuery with Visual Studio 2008

Web 方法返回一個以 JSON 格式序列化的產品。 由於沒有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.parse(result.d)eval(result.d)將其轉換為 JSON 對象

最后,你真正想要的是這樣做:

result = JSON.parse(result.d)

更新還要考慮這個演示,我使用字符串格式的 JSON 並將其轉換為 JSON 對象:

在此處輸入圖片說明

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

    }

對於那些想要真正從頭開始學習包裝類示例的人來說可能是非常有用的鏈接,其中一個類中的細節永遠不會泄露給其他類,但可以通過各種方法間接訪問http://www.c-sharpcorner .com/Blogs/12038/wrapper-class-in-C-Sharp.aspx

很明顯 $("#div").html(result.d); 在你的代碼中

“result”是一個對象,d是“result”的屬性。

解釋一下,

如果你創建這樣的對象,

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

如果我們訪問結果的屬性是使用jquery

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

所以我們在 html 中得到的結果是

<html>day</html>

它返回對象“ result ”中名為“ d ”的字段的值。

這個問題展示了一個 JSON 外觀示例,注意d:字段。

d 是 .NET 代碼返回的結果的一部分。 如果您查看此代碼,您應該會看到一個名為 d 的變量。 如果它是從序列化類生成的,那么它可能會發送該類的一個名為 d 的成員。

正如其他人指出的那樣,它返回"result"對象的"d"成員。
如果你想在一個變量中有"d" ,你可以使用這個:

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

有一次,我的朋友告訴我,“d”代表來自 ajax 返回的響應的“數據”(因為響應可以包含的不僅僅是簡單的數據)。

也許是,也許不是,但你仍然可以接受它。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM