2

我有一个 Web 方法将 JSON 作为事件数据返回到 fullCalendar,但添加了一个“()”,导致解析器错误。

我可以剪掉不需要的“()”,然后用 jQuery 附加事件,但显然不想保持这种方式。

数据来源是使用 Razor 的 Web 方法。使用 JSON 助手对数据进行编码会产生格式良好的 JSON 字符串,即没有“()”。当然,如果我使用编码,我会使用 Response.Write 将数据发送回 AJAX 函数。如果我使用 JSON.Write(data, Response.Output),则会收到相同的格式错误的 JSON 数据。

在成功函数中捕获返回的数据会显示带有附加“()”的数据。

这是返回数据的 Web 方法的一部分:

    // convert the header names and data to strings 
    var rows = from e in cE
               select new
               {
                   id = e.EvId,
                   title = e.Title,
                   start = e.startT,
                   allDay = false,
                   end = e.endT,
                   backgroundColor = e.eventColor
               };

    string mJson = Json.Encode(rows);
    //Json.Write(rows, Response.Output);
    Response.Write(mJson.Trim());

这是编码的结果:

    "[{\"id\":9,\"title\":\"new event\",\"start\":\"2012-05-29 19:00:00\",\"allDay\":false,\"end\":\"2012-05-29 20:00:00\",\"backgroundColor\":\"Orange    \"},{\"id\":9,\"title\":\"new event\",\"start\":\"2012-06-05 19:00:00\",\"allDay\":false,\"end\":\"2012-06-05 20:00:00\",\"backgroundColor\":\"Orange    \"},{\"id\":9,\"title\":\"new event\",\"start\":\"2012-06-12 19:00:00\",\"allDay\":false,\"end\":\"2012-06-12 20:00:00\",\"backgroundColor\":\"Orange    \"},{\"id\":10,\"title\":\"another\",\"start\":\"2012-06-22 19:00:00\",\"allDay\":false,\"end\":\"2012-06-22 19:45:00\",\"backgroundColor\":\"Orange    \"},{\"id\":10,\"title\":\"another\",\"start\":\"2012-06-29 19:00:00\",\"allDay\":false,\"end\":\"2012-06-29 19:45:00\",\"backgroundColor\":\"Orange    \"}]"  string

以下是 AJAX 成功函数显示为接收数据的内容:

    "[{"id":9,"title":"new event","start":"2012-05-29 19:00:00","allDay":false,"end":"2012-05-29 20:00:00","backgroundColor":"Orange    "},{"id":9,"title":"new event","start":"2012-06-05 19:00:00","allDay":false,"end":"2012-06-05 20:00:00","backgroundColor":"Orange    "},{"id":9,"title":"new event","start":"2012-06-12 19:00:00","allDay":false,"end":"2012-06-12 20:00:00","backgroundColor":"Orange    "},{"id":10,"title":"another","start":"2012-06-22 19:00:00","allDay":false,"end":"2012-06-22 19:45:00","backgroundColor":"Orange    "},{"id":10,"title":"another","start":"2012-06-29 19:00:00","allDay":false,"end":"2012-06-29 19:45:00","backgroundColor":"Orange    "}]();???"
4

0 回答 0