Стоит отметить, что некоторые браузеры теперь предоставляют набор встроенных функций для декодирования и кодирования JSON: JSON.parse () и JSON.stringify (). Они безопаснее, чем использование функции eval (), и работают только в том случае, если данные JSON правильно сформированы, тогда как eval () будет оценивать такие вещи, как:
{
'hello': (undefined
? 'world'
: ('number ' + Math.floor (40.235)))
}
Что с этим не так? Значение JavaScript «undefined» недоступно в JSON (допускаются только true, false, null, строки и числа); одинарные кавычки используются везде, когда в JSON допустимы только двойные кавычки; Вы не можете вызывать функции JavaScript или выполнять конкатенацию строк в JSON.
Очевидно, что последняя проблема представляет собой большую проблему, потому что вы можете получить какой-то вредоносный JSON, возможно, значение из формы ввода, который пытается вмешаться в дела. Поэтому, когда это возможно, используйте JSON.parse () и JSON.stringify () ... потому что eval () опасен.
Edit:
Я неправильно прочитал оригинальный пост. Если у вас есть объект JSON в PHP и вы хотите использовать его в JavaScript, вам необходимо преобразовать объект JSON в строку и передать его в JavaScript. Единственный способ сделать это - сначала заставить ваш код JavaScript запрашивать вновь созданную строку JSON. PHP будет возвращать строку, JavaScript будет использовать eval () или JSON.parse () в строке, и ваш объект будет иметь JavaScript. Я не уверен, что существует не-AJAX способ сделать это без преобразования файлов JavaScript в файлы PHP, установки заголовка Content-Type и т. Д., Но я знаю, что AJAX будет работать в этой ситуации.