jQuery.param()-donds';是否序列化javascript日期对象?

jQuery.param()-donds';是否序列化javascript日期对象?,javascript,jquery,Javascript,Jquery,encodeURIComponent(new Date())没有问题,我认为param会为每个成员调用它 此外,显式使用“传统”参数(例如jQuery.param(xxx,true))确实可以序列化日期,但遗憾的是,这没有多大帮助,因为我的数据结构不是扁平的 这是因为typeof(Date)=“object”和param试图深入其中查找标量值吗 如果一个对象恰好在$.post()中包含日期,那么如何实际地序列化该对象呢?您可能希望将日期转换为字符串,因为无论如何,它都必须在网络上 jQuery.

encodeURIComponent(new Date())没有问题,我认为param会为每个成员调用它

此外,显式使用“传统”参数(例如jQuery.param(xxx,true))确实可以序列化日期,但遗憾的是,这没有多大帮助,因为我的数据结构不是扁平的

这是因为typeof(Date)=“object”和param试图深入其中查找标量值吗


如果一个对象恰好在$.post()中包含日期,那么如何实际地序列化该对象呢?

您可能希望将日期转换为字符串,因为无论如何,它都必须在网络上

jQuery.param({foo: 1});             // => "foo=1" - SUCCESS!
jQuery.param({bar: new Date()});    // => "" - OUCH!

现在,您可能希望以某种特定的方式对其进行格式化,以便您的服务器获得它可以解析的内容。我认为datejs库支持格式化,或者您可以通过使用
getDate()
getMonth()
getYear()
等来挑选日期片段来实现自己的格式化。

如果您在服务器端使用Microsoft产品,您应该考虑,Microsoft将日期序列化为UTC之后的毫秒数,也可以序列化为数字。更准确地说,序列化字符串类似于
/Date(utcDate)/
,其中
utcDate
Date是这个数字。因为JSON支持反斜杠作为转义字符,所以应该使用如下代码来序列化
Date
对象
myDate

$.param({bar: new Date().toString()});

我认为这是以下上下文中的jQuery错误:

  • jQuery 1.4.2(1.3.2工程)
  • Date.prototype中添加的新方法

您使用的是什么版本的jQuery?对我来说不是这样的…:\
jQuery.param({bar:newdate()})=
bar=Sat+May+08+2010+17%3A17%3A42+GMT%2B0100+(GMT+Daylight+Time)
@Matt:我使用的是1.4.2。您是否碰巧默认了traditional=true?这是我得到你结果的唯一途径。有没有想过为什么我们会看到不同的行为?我更喜欢你的:-)谢谢,但实际上我更关心的是jQuery.param并没有序列化日期对象的任何内容,但encodeURIComponent知道Date()很好。在本例中,格式并没有真正的问题,因为我的(Rails)服务器可以解析所有合理的日期格式,包括您建议的纯'ol.toString()。
"\/Date(" +  Date.UTC(myDate.getUTCFullYear(), myDate.getUTCMonth(),
                      myDate.getUTCDate(), myDate.getUTCHours(),
                      myDate.getUTCMinutes(), myDate.getUTCSeconds(),
                      myDate.getUTCMilliseconds()) + ")\/"