2011-03-02 70 views
1

我有传递JSON字符串化阵列麻烦PageMethod的麻烦传递JSON字符串化阵列到PageMethod的

[{ 
    "StartDate": "3/1/2011", 
    "EndDate": "3/31/2011", 
    "UserId": "8", 
    "DdlViewSelectedValue": "zzz#", 
    "DdlViewSelectedItem": "zzz", 
    "DdlOrgSelectedValue": "8" 
}, { 
    "StartDate": "3/1/2011", 
    "EndDate": "3/31/2011", 
    "UserId": "9", 
    "DdlViewSelectedValue": "zzz#", 
    "DdlViewSelectedItem": "zzz", 
    "DdlOrgSelectedValue": "8" 
}, { 
    "StartDate": "3/1/2011", 
    "EndDate": "3/31/2011", 
    "UserId": "5", 
    "DdlViewSelectedValue": "zzz#", 
    "DdlViewSelectedItem": "zzz", 
    "DdlOrgSelectedValue": "8" 
}, { 
    "StartDate": "3/1/2011", 
    "EndDate": "3/31/2011", 
    "UserId": "13", 
    "DdlViewSelectedValue": "zzz#", 
    "DdlViewSelectedItem": "zzz", 
    "DdlOrgSelectedValue": "8" 
}, { 
    "StartDate": "3/1/2011", 
    "EndDate": "3/31/2011", 
    "UserId": "6", 
    "DdlViewSelectedValue": "zzz#", 
    "DdlViewSelectedItem": "zzz", 
    "DdlOrgSelectedValue": "8" 
}, { 
    "StartDate": "3/1/2011", 
    "EndDate": "3/31/2011", 
    "UserId": "11", 
    "DdlViewSelectedValue": "zzz#", 
    "DdlViewSelectedItem": "zzz", 
    "DdlOrgSelectedValue": "8" 
}] 

当我到这个AJAX请求,“jsonText”包含上述

function GetUserSchedules() {   
     var jsonText = $.toJSON(arrParams); 
     $.ajax({ 
      type: "POST", 
      url: "/myurl/jquery.aspx/GenerateUserSchedules", 
      data: "{" + jsonText + "}", 
      contentType: "application/json", 
      dataType: "json", 
      success: AjaxSucceeded 
      , 
      error: AjaxFailed 
     }); 
    } 
列出的数据

的PageMethod的:

[System.Web.Script.Services.ScriptMethod] 
    [System.Web.Services.WebMethod] 
    public static void GenerateUserSchedules(Data[] data) 
    { 
    //do stuff; will return data but for now, just keeping it like this 
      System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();  
} 

数据类:

[Serializable] 
public class Data 
{ 
    public DateTime StartDate { get; set; } 
    public DateTime EndDate { get; set; } 
    public int UserID { get; set; } 
    public string ViewSelectedValue { get; set; } 
    public string ViewSelectedItem { get; set; } 
    public string OrgSelectedValue { get; set; } 
} 

每次AJAX请求被发送的误差函数执行。我究竟做错了什么?

+1

有什么错误报告功能的错误? – 2011-03-02 17:43:48

+0

其实,jsonText被发送到服务的位置?我看到'scheduleRows'被发送,但'jsonText'不是。 – 2011-03-02 17:45:43

+0

对不起,那是一个错字...我已校正码 – Bengal 2011-03-02 17:47:49

回答

2

这是日期的常见问题。该JavaScriptSerializer预计以下格式的日期,以便成功地解析他们:

{ 
    "StartDate": "\/Date(983401200000)\/", 
    "EndDate": "\/Date(985989600000)\/", 
    "UserId": "8", 
    "DdlViewSelectedValue": "zzz#", 
    "DdlViewSelectedItem": "zzz", 
    "DdlOrgSelectedValue": "8" 
} 

其中983401200000表示自1970年1月1日,以通用标准时间(UTC)的毫秒数。

报价该documentation

日期目的,JSON表示为 “\ /日期(蜱的数目)\ /”。 刻度数是正数或 负数长整数值,表示 自从午夜01. UTC开始经过的刻度数(毫秒)。

支持的最大日期值是 的MaxValue(12/31/9999下午十一时59分59秒)和 所支持的最低日期值是 MINVALUE(1/1/0001 12:00:00 AM)。

+0

这是一个有用的技巧,但我还没有开始在页面方法 – Bengal 2011-03-02 18:08:10

+0

@Bengal但反序列化,是的,你没有但那是自动即使之前完成你的方法被调用。并且因为这个对'Data []'实例的反序列化失败了,所以会调用错误回调。您不应该手动序列化/反序列化。它自动完成输入/输出参数。 – 2011-03-02 18:09:30

+0

感谢您的反馈。我根据你的建议改变了日期,但仍然没有运气。顺便说一句,如何将日期转换为您描述的格式? – Bengal 2011-03-02 18:34:29