【发布时间】:2014-03-23 16:44:41
【问题描述】:
我的控制器使用 JSON 将日期数据发送到视图。在视图中,我将这些数据发送到 jQuery 模板进行显示。我的问题是日期,因为我得到这个值就像
"/Date(1245398693390)/"
所以我尝试使用this solution,但使用 FireBug 我可以看到在行中抛出了一个错误
var value = new Date(parseInt(jsonDate.substr(6)));
有错误
jsonDate.substr is not a function
如果它很重要,我会尝试使用 jQuery mobile 来实现它。
更新
<script id="myDataTemplate" type="text/html">
<li>@Html.ActionLink("${GetDateString(Date)}", "Fetch", "Data")</li>
</script>
这是布局视图中注入的js函数
<script>
function getDateString(jsonDate) {
if (jsonDate == undefined) {
return "";
}
var utcTime = parseInt(jsonDate.substr(6));
var date = new Date(utcTime);
var minutesOffset = date.getTimezoneOffset();
return date.addMinutes(minutesOffset).toString("M/d/yyyy h:mm tt");
}
</script>
更新 2 这是我最初使用的js函数
function GetDate(jsonDate) {
var value = new Date(parseInt(jsonDate.substr(6))); //breaks
return value.getMonth() + 1 + "/" + value.getDate() + "/" + value.getFullYear();
}
【问题讨论】:
-
你得到的实际上是javascript代码,而不是json。这意味着如果您执行该代码,它将生成一个新的
Date对象,该对象从自 unix 纪元日期以来的 #milliseconds 开始。换句话说,您需要将该值视为 JSONP。 -
@Kristian 感谢您抽出宝贵时间。问题已更新。您能否通过具体示例添加解决方案。
-
所以,当您控制台输出
jsonDate变量时,您会得到"/Date(1245398693390)/"? -
我刚刚发布了最初使用的js函数。它在 var value = ... 行上中断。当然我用过@Html.ActionLink("${GetDate(Date)}"...
-
是的,这是因为 jsonDate 的值不是正确的字符串。因此函数
substr不可用。因此,为了继续调试它,您需要在断线之前在该函数内抛出一个console.log,以准确识别 jsonDate 的值是什么,并确保它实际上是一个字符串。
标签: javascript jquery json jquery-mobile