Это JSON:
var foo = "{bar: 1}";
Это не JSON:
var foo = {bar: 1};
Ваш фрагмент кода вообще не использует JSON, и я считаю, что он вам даже не нужен. Если вы используете PHP для генерации некоторого кода JavaScript, вы можете просто настроить свой код PHP для печати текста, который будет содержать real переменных JavaScript. Нет необходимости кодировать вещи как обычный текст!
Теперь ясно, что нам не нужен JSON, давайте воспользуемся подвохом. PHP имеет json_encode () , и мы можем злоупотреблять тем фактом, что строки JSON напоминают переменные JavaScript. Все, что нам нужно сделать, это вызвать json_encode () для нашей переменной PHP и забыть , чтобы процитировать результат:
<?php
$foo = array(
'bar' => 1,
'dot' => FALSE,
);
echo 'var JSONString = "' . json_encode($foo) . '";' . PHP_EOL;
echo 'var realVariable = ' . json_encode($foo) . ';' . PHP_EOL;
Сравните:
var JSONString = "{"bar":1,"dot":false}";
var realVariable = {"bar":1,"dot":false};
Редактировать: Да, моя JSONString не является допустимой строкой ... но мы поняли <:-) </p>