1

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

我的设计是这样的。

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

4

2 回答 2

2

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

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

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

JSON.parse(obj);
于 2013-02-24T14:31:29.203 回答
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);
        })
    }
});
于 2013-02-24T14:31:39.290 回答