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