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格式序列化的产品。 由于没有JSON
types,返回的值是一个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>