在Ajax应用中,利用asp.net网络服务将DateTime数据格式转换成JSON格式返回到浏览器中时,会出现一些不友好的问题,例如时间DateTime(1980, 2, 2),经过网络服务JSON格式化后,返回到浏览器中的格式如下:
{"datetime":"\/Date(318326400000)\/"}
上面的日期格式,JS理解起来肯定存在问题,为了使前端JS更好的理解上面的日期,我们可以利用正则表达式来解决这一问题,在jQuery中,解决方法如下:
$.ajax({ type: "POST", url: "service.asmx/getDate", contentType: "application/json; charset=utf-8", dataType: "json", dataFilter: function (data, type) { return data.replace(/"\\\/(Date\([0-9-]+\))\\\/"/gi, 'new $1'); }, success: function (msg) { alert(msg.datetime); } });
生成的日期格式为原生态的JS日期格式,使用起来非常方便,见下面:
{"datetime":new Date(318326400000)}
在Ext.js中,由于本人未发现类似于dataFilter函数的东西,所以只能在返回的数据上做文章。例如:
var stringdata = response.responseText; stringdata = stringdata.replace(/"\\\/(Date\([0-9-]+\))\\\/"/gi, 'new $1'); var data = Ext.decode(stringdata); var theJsonDate = data.d; console.log(theJsonDate);
综上,解决的办法就是利用正则表达式把不友好的日期字串转化为原生态的JS数据类型,方便使用。