正在将处理程序的结果转换为数组格式

本文关键字:转换 数组 格式 结果 处理 程序 | 更新日期: 2023-09-27 18:01:04

作为开发领域的新手,我有一个问题,我如何根据我对最佳实践的要求来获取数据

我的设计是这样的。

Java脚本(Ajax调用(>>ashx处理程序(点击数据库并返回数据(>>数据库(我的值(

我需要这样的数据才能在HTML 中呈现

 var events_array = new Array();
            events_array[0] = {
                startDate: new Date(2013, 01, 25),
                endDate: new Date(2013, 01, 25),
                title: "Event 2013, 01, 25",
                description: "Description 2013, 01, 25",
                priority: 1, // 1 = Low, 2 = Medium, 3 = Urgent
                frecuency: 1 // 1 = Daily, 2 = Weekly, 3 = Monthly, 4 = Yearly
            };
            events_array[1] = {
                startDate: new Date(2013, 01, 24),
                endDate: new Date(2013, 01, 24),
                title: "Event 2013, 01, 24",
                description: "Description 2013, 01, 24",
                priority: 2, // 1 = Low, 2 = Medium, 3 = Urgent
                frecuency: 1 // 1 = Daily, 2 = Weekly, 3 = Monthly, 4 = Yearly
            }
            events_array[2] = {
                startDate: new Date(2013, 01, 07),
                endDate: new Date(2013, 01, 07),
                title: "Event 2013, 01, 07",
                description: "2013, 01, 07",
                priority: 3, // 1 = Low, 2 = Medium, 3 = Urgent
                frecuency: 1 // 1 = Daily, 2 = Weekly, 3 = Monthly, 4 = Yearly
            }

我想知道如何从我的ashx处理程序发送这样的数据。

我有EventEnfo的课。我可以从处理程序传递EventInfo的列表,并像上面那样在数组中格式化/转换它吗?有什么例子吗?

正在将处理程序的结果转换为数组格式

您可以使用JavaScriptSerializer。因此,您可以从设计一个与所需JSON结构匹配的模型开始:

public class EventInfo
{
    public DateTime startDate { get; set; }
    public DateTime endDate { get; set; }
    public string title { get; set; }
    ...
}

然后进入你的处理程序:

public void ProcessRequest(HttpContext context)
{ 
    IEnumerable<EventInfo> result = ... fetch from db
    var serializer = new JavaScriptSerializer();
    context.Response.ContentType = "application/json";
    context.Response.Write(serializer.Serialize(result));
}

更新:

以下是如何使用结果:

$.ajax({
    url: '/myhandler.ashx',
    success: function(events) {
        $.each(events, function() {
            alert('Title of the event: ' + this.title);
        })
    }
});

events_array不是一个数组,而是一个对象,所以创建新的array是错误的。做新对象或更好{}:

var events_array = {};
events_array[0] = {...

如果后端可以将内容转换为JSON对象,则可以通过ajax将其发送到客户端并解析为

JSON.parse(obj);