jQuery.param({foo: 1}); // => "foo=1" - SUCCESS!
jQuery.param({bar: new Date()}); // => "" - OUCH!
encodeURIComponent(new Date())没有问题,这是我认为param为每个成员调用的。
另外,明确使用“传统”参数(例如jQuery.param(xxx,true))是否序列化了日期,但是,由于我的数据结构并不平坦,所以没有多大帮助。
这是因为typeof(Date)==“object”而param试图进入它以查找标量值吗?
对于$ .post()等,如何真实地序列化碰巧有Date的对象?
答案 0 :(得分:5)
您可能希望将日期转换为字符串,因为无论如何它都必须在电线上。
$.param({bar: new Date().toString()});
现在您可能希望以某种特定方式对其进行格式化,以便您的服务器获得可以解析的内容。我认为datejs库支持格式化,或者您可以通过使用getDate()
,getMonth()
,getYear()
等选择日期部分来推广自己。
答案 1 :(得分:1)
如果您在服务器端使用Microsoft产品,则应考虑到Microsoft将日期序列化为UTC以来的毫秒数,以及数字。更确切地说,序列化字符串看起来像/Date(utcDate)/
,其中utcDate
date是此数字。因为JSON支持将反斜杠作为转义字符,所以您应该使用以下代码来序列化Date
对象myDate
:
"\/Date(" + Date.UTC(myDate.getUTCFullYear(), myDate.getUTCMonth(),
myDate.getUTCDate(), myDate.getUTCHours(),
myDate.getUTCMinutes(), myDate.getUTCSeconds(),
myDate.getUTCMilliseconds()) + ")\/"
答案 2 :(得分:0)
我认为这是以下上下文中的jQuery错误: