以数组格式转换处理程序的结果

时间:2013-02-24 14:27:22

标签: c# javascript jquery asp.net

作为开发中的新蜜蜂,我有一个问题,如何根据我对最佳实践的评价来获取数据

我的设计是这样的。

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列表并在上面格式化/转换它吗? ?有什么例子吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

JSON.parse(obj);

答案 1 :(得分:2)

您可以使用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);
        })
    }
});