JSON中的.d是什么意思?

我有一个.NET webmethod,我从jQuery调用。 该方法返回一些在DIV元素中显示的HTML标记。

一旦我有我使用的答复

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

我的问题是,.d做什么? 我不喜欢使用我不完全理解的代码? 我可以使用Eval获得相同的结果吗?

您是指ADO.NET数据服务?

我记得听说过关于JSON返回这个演示文稿,我认为它只是一个包装,以确保有效载荷是一个JSON对象 ,而不是一个数组(这是返回多个实体的情况下)。

为什么'd'具体? 我想我记得他们说的是“好的,必须是某种东西”。

基于本教程: JSON Web服务和jQuery与Visual Studio 2008

Web方法返回一个以JSON格式序列化的产品。 由于没有JSONtypes,返回的值是一个JSON格式的String

在客户端,ajax调用返回一个JSON。

结果看起来像{d: 'returned-string-with-JSON-format'}

更确切地说是这样的: {d:'{"ID":123,"Name":"Surface Pro 2"}'}

请注意, 'returned-string-with-JSON-format'是一个不是JSON对象的string,因此您不能执行result.d.ID

相反,您需要使用JSON.parse(result.d)eval(result.d)将其转换为JSON对象。

最后,你真正想要的是做到这一点:

 result = JSON.parse(result.d) 

更新也考虑这个演示,我在string格式中使用JSON并将其转换为JSON对象:

在这里输入图像说明

对于那些想从头开始学习一个关于包装类的例子,可能是非常有用的链接,其中一个类中的细节永远不会泄露给其他类,但可以通过各种方法间接访问http://www.c-sharpcorner的.com /博客/ 12038 /包装级式-C-Sharp.aspx

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

它返回对象' result '中名为' d '的字段的值。

这个问题展示了一个JSON可能的样子,注意d:字段。

d是.NET代码返回的结果的一部分。 如果你看这个代码,你应该看到一个名字为d的variables。 如果它是从序列化类生成的,那么它可能会沿着该类的成员发送名称d。

正如其他人指出的那样,它返回"result"对象的"d"成员。
如果你想在variables中使用"d" ,你可以使用这个:

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

它非常清楚$(“#div”)。html(result.d); 在你的代码中

“结果”是一个对象,d是“结果”的属性。

我们来解释

如果你创build这样的对象,

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

如果我们访问结果的属性是使用jQuery

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

所以我们得到的结果是HTML

 <html>day</html>