Такое поведение является преднамеренным. JSON не должен включать ничего, кроме данных - в вашем случае это исполняемая функция. Браузер будет подвергаться огромным угрозам безопасности, если данные могут возвращаться с сервера в формате JSON, который при запуске будет запускать произвольные функции (которые могут украсть информацию, перенаправить пользователя на вредоносный сайт и т. Д.)
Ранние реализации JSON основаны на том факте, что возвращаемые данные могут быть просто выполнены с помощью eval () для возврата объекта. Тем не менее, люди почти сразу поняли, что это создает огромные угрозы безопасности, и с тех пор пытаются справиться с этим. Вот почему до стандартизированного объекта JSON люди перестали помещать необработанные данные JSON в eval () и использовали вместо этого библиотеки синтаксического анализа JSON.
Объект JSON всегда сериализует объект только в данные. Это по замыслу. Стандартизированный формат JSON не может представлять исполняемую функцию.
Теперь вы можете легко преобразовать этот обратный вызов в браузере в функцию, передав его в eval (). Однако не делайте этого . Ты просто открываешь себя для взлома.
На стороне сервера современные браузеры спроектированы так, чтобы не допустить этого точно - т.е. данные отправляются из браузера, который содержит исполняемую функцию.