简介:
我的ASP.NET页面上有一个ASP.NET,它返回一个Person对象。其中一个字段是Birthday,它是DateTime属性。
WebMethod
[WebMethod]
public static Person GetPerson()
{
Person p = new Person() {
Id = 1,
Name = "Test",
Birthday = new DateTime(1988, 9, 13)
};
return p;
}如果我使用$.ajax()进行调用,就会得到服务器的响应和Person对象。
Ajax调用
// Class instance
var Ajaxcalls = function () {
}
_$.extend(Ajaxcalls, {
GetPerson: function (label) {
var self = label instanceof _$ ? label : $(label);
_$.ajax({
url: 'Default.aspx/GetPerson',
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
console.log(JSON.stringify(data.d));
self.html(new Date(Date.parse(data.d.Birthday)));
}
});
}
});结果:
{"__type":"AjaxTest.Classes.Person","Id":1,"Name":"Test","Birthday":"/Date(590104800000)/"}问题
如何将Birthday /Date(590104800000)/解析为javascript/jQuery?我试过new Date(Date.parse(data.d.Birthday)),但它给了我一个Invalid date。
发布于 2014-12-05 11:42:48
使用为您执行此操作的convertToJavaScriptDate()函数:
function convertToJavaScriptDate(value) {
var pattern = /Date\(([^)]+)\)/;
var results = pattern.exec(value);
var dt = new Date(parseFloat(results[1]));
return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
}convertToJavaScriptDate()函数接受\/Date(ticks)\/格式的值,并以MM/dd/yyyy格式返回日期字符串。
在内部,convertToJavaScriptDate()函数使用一个表示模式/Date\(([^)]+)\)/的正则表达式。
exec()方法接受源日期值,并测试值中的匹配值。exec()的返回值是一个数组。在这种情况下,结果数组(results[1])的第二个元素保存源日期的刻度。
例如,如果源值是\/Date(836418600000)\/,那么results[1]将是836418600000。
在此基础上,形成一个JavaScript日期对象。Date对象有一个构造函数,它接受1970年1月1日以来的毫秒数。
因此,dt持有一个有效的JavaScript日期对象。
然后,convertToJavaScriptDate()函数将日期格式化为MM/dd/yyyy,并返回给调用者。
您可以使用convertToJavaScriptDate()函数,如下所示:
options.success = function (order) {
alert("Required Date : " + convertToJavaScriptDate(order.RequiredDate) + ", Shipped Date : " + convertToJavaScriptDate(order.ShippedDate));
};尽管上面的示例以MM/dd/yyyy格式使用日期,但一旦构造了date对象,您也可以使用其他格式。
参考资料:链接
发布于 2014-12-05 11:29:05
你可以试试这个:
_$.ajax({
url: 'Default.aspx/GetPerson',
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
console.log(JSON.stringify(data.d));
var src = data.d.Birthday;
//Remove all non-numeric (except the plus)
src = src.replace(/[^0-9 +]/g, '');
//Create date
var birthDate = new Date(parseInt(src));
self.html(birthDate);
}
});JSFiddle
发布于 2015-03-17 14:22:14
如果您开放使用另一个JavaScript库:
http://momentjs.com/docs/#/parsing/asp-net-json-date/
https://stackoverflow.com/questions/27314663
复制相似问题