【问题标题】:Deserializing json date on server (asp.net)反序列化服务器上​​的 json 日期(asp.net)
【发布时间】:2009-11-18 10:27:40
【问题描述】:

我目前正在尝试在我的简单 asp.net 网站中实现出色的 jQuery 插件“周历”(here)。我设置了几个 [WebMethods] 来将数据发送到日历并响应客户端事件(创建事件、修改事件等)。

当使用 WebMethods 时,asp.net 的对象自动序列化在发送数据时似乎运行良好,但是当发生相反的情况时,我遇到了问题。

将日历事件发送回服务器的相关javascript代码如下:

save: function() {
                    calEvent.id = id;
                    id++;
                    calEvent.start = new Date(startField.val());
                    calEvent.end = new Date(endField.val());
                    calEvent.title = titleField.val();
                    calEvent.body = bodyField.val();

                    $calendar.weekCalendar("removeUnsavedEvents");
                    $calendar.weekCalendar("updateEvent", calEvent);
                    $dialogContent.dialog("close");
                    //SAVE TO DATABASE

                    $.ajax({
                        type: "POST",
                        url: "Tracker.aspx/AddEvent",
                        data: calEvent,
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function(data) {
                            alert("saved");
                        }
                    });

目前我在服务器上只有一个“存根方法”来检查反序列化是否有效:

[WebMthod]    
public static string AddEvent(Event e)
        {
            //save event to database and return something
            return "done";
    }

但是,我在添加事件时发现了以下异常:

无效的 JSON 原语:开始。

在服务器上,我的事件对象组成如下:

[DataContract]
public class Event
{
    [DataMember]
    public int id { get; set; }
    [DataMember]
    public string title { get; set; }
    [DataMember]
    public string body { get; set; }
    [DataMember]
    public string start { get; set; }
    [DataMember]
    public string end { get; set; }
}

【问题讨论】:

  • @Chris:在进行编辑时,最好修复帖子中的所有问题,而不是简单地大量更改各种问题的标签。谢谢!
  • @Chris:别担心,我指的是一般的编辑,这是我在列表中的第一个所以我点击了那个。

标签: asp.net json webmethod


【解决方案1】:

如下修改对 Web 服务的调用即可:

$.ajax({
                        type: "POST",
                        url: "Tracker.aspx/AddEvent",
                        data: '{e : ' + JSON.stringify(calEvent) + '}',
                        contentType: "application/json; charset=utf-8",
                        dataType: "text",
                        success: function(data) {
                            alert("saved");
                        }
                    });

只需使用 JSON.stringify 函数处理发送到服务器的 JSON 格式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多