gpt4 book ai didi

c# - JavaScript - 从使用 Json.Net 创建的 JSON 对象中提取数据

转载 作者:行者123 更新时间:2023-12-02 16:59:26 25 4
gpt4 key购买 nike

我有一个服务器端方法用于将数据返回给用户。数据存储在 SQL Server 数据库中,并使用 EF 6 进行映射。使用 id 值从数据库中提取对象后,随后使用 Json.NET 框架对对象进行序列化。该对象“按原样”使用,不会过滤掉对其他表的引用。因此,我不得不使用“PreserveReferencesHandling”选项。在客户端,使用AJAX来调用该方法。我无法从对象(客户端)中提取数据,该数据确实被序列化并按预期传递到浏览器。

服务器端方法:

[WebMethod]
public static string ContactData(long id)
{
IService<Contact> contactService = new ContactService();
Contact contactEdit = contactService.GetById(id);

string str = JsonConvert.SerializeObject(contactEdit, new JsonSerializerSettings
{
PreserveReferencesHandling = PreserveReferencesHandling.Objects
});

return str;
}

客户端函数(重要部分):

$.ajax({
type: "POST",
url: "Contacts.aspx/ContactData",
data: JSON.stringify({ id: contactId }), // id by which I am receiving the object
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (contact) {
$("#tbFirstName").val(contact.d[0].Contact.first_name); // I've tried various combinations to no avail
},
});

这就是 JSON 对象(测试目的数据)在 Visual Studio 的 JSON Visualizer 中的样子:

JSON Visualizer

这就是浏览器(FF 32,这很重要)接收到的内容:

Firebug

如果需要,我会发布更多信息。

最佳答案

在处理json之前先解析它。并使用 jquery every 函数循环遍历它。

    $.ajax({
type: "POST",
url: "Contacts.aspx/ContactData",
data: JSON.stringify({ id: contactId }), // id by which I am receiving the object
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (contact)
{
var contact=jQuery.parseJSON(contact);
$.each(contact, function(i, item) {
alert(i + " ==> "+ item.first_name);
});

}

});

关于c# - JavaScript - 从使用 Json.Net 创建的 JSON 对象中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25889194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com