phpdude, по твоей ссылке в комментариях нарыл два куска
// All scalars are converted to strings to avoid indeterminism.
// PHP's "1" and 1 are equal for all PHP operators, but
// JS's "1" and 1 are not. So if we pass "1" or 1 from the PHP backend,
// we should get the same result in the JS frontend (string).
// Character replacements for JSON.
static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'),
array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
# Escape non-printable or Non-ASCII characters.
$string = '"' . addcslashes($data, "\"\\\n\r\t\f/" . chr(8)) . '"';
rider-sx, порой неудобно и сложно устраивать общение брузера с сервером на чистом JS(используя JSON для передачи данных). Я часто просто подгружаю нужный html-контент с вкраплениями JS-кода. Еще чаще просто возвращаю часть JS-кода, который и есть реакцией сервера на запрос.