2014-01-15 3 views
0

Я генерирую строку JSON из массива PHP, чтобы эхо-объект JS.
Это то, что я хочу получить в ЯШ:JS переменная внутри строки JSON от PHP

var myVar = 123;  
//php output: 
var obj = {a:1, b:[1,2], c: myVar, d:Date.UTC(2014, 0, 07)} 

Это то, что у меня есть:

<?php 
$array = array('a'=>1, 'b'=>array(1,2), 'c'=>???, 'd'=>???); 
echo json_encode($array); 
?> 

Вопрос: Что я положил в PHP вместо вопросительных знаков так, что он выиграл» t быть преобразовано в строку?

+0

_so что он не будет преобразован в строку_? Какой тип переменной? Если вы выполняете 'json_encode', он всегда будет анализироваться как строка, я думаю. – putvande

+1

FYI: Это не JSON. JSON не имеет в нем переменных и не вызывает методы. – epascarello

+1

JSON должен быть отсоединен от вашего приложения. Вы не должны размещать в нем переменные указатели ... Это хранилище данных, а не набор переменных. – BenM

ответ

0

Вы могли бы сделать что-то вроде этого:

<?php 
    $array = array('a'=>1, 'b'=>array(1,2), 
    'c'=>'@#myVar#@', 
    'd'=>'@#Date.UTC(2014, 0, 07)#@' 
); 
    $json = json_encode($array); 
    echo preg_replace('/\"\@\#(.*?)\#\@\"/', '${1}', $json); 
?> 

Но в JS JSON.parse не будет работать, так:

eval("var x = " + json_from_php); 

Не такая хорошая идея, но если вам это нужно, это сработает. Просто не забудьте использовать это с любым «json», который генерируется не вашим сервером.

1

JSON не поддерживает переменные или специальные объекты Date. Вы можете использовать только скалярные значения (строки, числа, булевы), массивы и объекты (ассоциативные массивы).

Чтобы получить то, что вы хотите, нужно вернуть файл .js и выполнить его браузер (включив его как скрипт) вместо передачи простых данных JSON. В противном случае вы можете определить только «специальные» строки, которые обрабатываются принимающей стороной. (Например, массив ["var", "myVar"] может быть обработан соответствующим образом.)

+0

Существует общепринятый формат даты для использования с JSON, но его тип все еще просто строка. – crush

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