0

我正在从我的一个控制器返回一些 json,类似于以下内容:

render :json => {
:date => "new Date(new Date('Jan 01 2000').getTime() + #{500.seconds.to_i} * 1000)"
}

我期待它返回一个设置为午夜后 500 秒(或正好是 00:08:20)的新日期。此 json 由期望日期的 JavaScript 函数传递和处理,但它似乎将其解释为字符串。我收到类似于以下内容的错误消息:

类型不匹配。值 new Date(new Date('Jan 01 2000').getTime() + 500 * 1000) 与日期类型不匹配

然而,在 Firebug 控制台中运行它会产生一个完全有效的日期。如何让 JavaScript 将我的 json 用作日期?


编辑

为了提供更多上下文,我将向 JavaScript 函数发送一系列 JSON 请求,该函数使用 Google 的 Visualization API 构建图表。

4

1 回答 1

1

JSON 不是 Javascript,它只是一种数据序列化格式,很像 XML。

你所拥有的实际上是一串需要解释的 Javascript 代码(或者最好避免解释)。实际上,要使其成为有效 JSON 的唯一方法是使其成为字符串值。即使这样,如果不在数组或对象属性中,它也不应该正确解析。

您应该将返回该 Javascript 代码的任何内容重构为 return just 'Jan 01 2000',然后在 Ruby 中进行该处理。或者无论如何最好重构它;没有更多的上下文很难说。

于 2012-11-15T19:23:47.563 回答