0

次のようなコントローラーの1つからjsonを返します。

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

真夜中を500秒過ぎた(または正確に00:08:20)に設定された新しい日付が返されることを期待しています。このjsonは、日付を予期しているJavaScript関数によって渡されて処理されますが、文字列として解釈されているようです。次のようなエラーメッセージが表示されます。

型の不一致。値newDate(new Date('Jan 01 2000')。getTime()+ 500 * 1000)がタイプdateと一致しません

ただし、Firebugコンソールでそれを実行すると、完全に有効な日付が生成されます。JavaScriptでjsonを日付として無効にするにはどうすればよいですか?


編集

もう少しコンテキストを提供するために、GoogleのVisualizationAPIを使用してグラフを作成するJavaScript関数に一連のJSONリクエストを送信しています。

4

1 に答える 1

1

JSONはJavascriptではなく、XMLによく似た単なるデータシリアル化形式です。

あなたが持っているのは、実際には解釈する必要のある(または、できれば解釈する必要がない)Javascriptコードの文字列です。それが有効なJSONであるための唯一の方法は、実際、それが文字列値であるということです。それでも、配列またはオブジェクトプロパティ内にないと正しく解析されないはずです。

そのJavascriptコードを返すものはすべてリファクタリングして、代わりに単にを返すように'Jan 01 2000'してから、Rubyでその処理を行う必要があります。または、ただし、リファクタリングするのが最適です。これ以上の文脈がなければ見分けるのは難しい。

于 2012-11-15T19:23:47.563 に答える