通过 WCF 与页面进行 Ajax 进行数据传递非常方便,可以,遇到日期类型就不同了。
WCF 通过 JavaScriptSerializer 将日期格式化为特殊的格式:\/Date(1318287600+0100)\/,实际上传递到页面上的是一个字符串。而不是真正的 JavaScript 日期。
同样,当浏览器想要向服务器传递日期类型的数据时也必须通过这种特殊的字符串来提供数据。
为了解决这个问题,可以使用下面的方法为 jQuery 扩展一个数据转换的方法。
// 为 jQuery 扩展一个解析 wcf 日期的方法
jQuery.extend(
{
wcfDate2JsDate: function (wcfDate) {
var date = new Date(parseInt(wcfDate.substring(6)));
return date;
},
jsDate2WcfDate: function (jsDate) {
// \/Date(568310400000+0800)\/
return "\/Date(" + jsDate.getTime() + "+0000)\/";
}
}
);
在页面中引用 jQuery 脚本文件之后,加入这段脚本即可。
可以如下方式来使用:
var d = new Date(); // 标准的 JavaScript 日期数据
alert(d);
var wcf = $.jsDate2WcfDate(d); // 转换为 WCF 日期格式
alert(wcf);
alert($.wcfDate2JsDate(wcf)); // WCF 日期格式转化为 JavaScript 日期格式
当然,可以将这段脚本保存在一个文件中,以后在页面中直接引用即可。