2016-05-06 1 views
0

Я использую таблицу диаграмм Google. В DataTable мне нужна дата и, например, Javascript код должен быть следующим:PHP и javascript: передать новую дату как json

rows: [{c:[{v: 'Mike'}, {v: new Date(2008, 1, 28), f:'February 28, 2008'}]}, 

Как я могу передать

new Date(2008, 1, 28) 

как объект JSON из PHP?

Я сделал:

.... 
array('v' => "new Date($timeStamp)"); 
... 
$output = json_encode($table); 

но в JavaScript я получаю new Date(2008, 1, 28) в виде строки и не создает экземпляр новой даты.

Как я могу создать новую дату()?

Благодаря

+0

Не должно быть так: 'array ('v' => Date ($ timeStamp));'? Почему вы добавляете цитаты и почему новый оператор? – Thamilan

+0

Хотя это можно сгенерировать с помощью PHP, было бы неправильно называть его JSON, поскольку JSON не поддерживает встроенные вызовы функций, а не 'new'. Можете ли вы показать код, в котором PHP выводит «JSON» и контекст вокруг него (возможно, другой JavaScript)? – trincot

+0

@Thamizhan Я пробовал, но не работает json_encode – Tom

ответ

0

Вы можете сделать это один в вас JavaScript:

var date = eval("new Date(2008, 1, 28)"); // Here should paste the string that you receive. 

Это должно Eval его.

0

Объект JavaScript, который вы хотите получить, не является JSON, поскольку JSON не разрешает ключевое слово new или вызов функции, например Date().

Что вы можете сделать, это уйти от чистого JSON, например:

<? 
$timeStamp = time(); // UNIX epoch 

$table = array(
    array('v' => 31415926535), // some unique number, that does not occur elsewhere 
); 
$output = json_encode($table); 
// Alter JSON, and now you cannot call it JSON anymore: 
$output = str_replace($table[0]['v'], "new Date($timeStamp)", $output); 
?> 
<script> 
    var table = { 
     ... 
     rows: <?= $output ?>, 
     ... 
    }; 
    ... 
</script> 

Убедитесь, что $ TIMESTAMP либо число, представляющее собой эпоху UNIX (как пример abopve) или строку , хорошо отформатированный для JavaScript для интерпретации даты. В последнем случае вам нужно обернуть $ timeStamp в одинарных кавычках.

Смежные вопросы