我需要将一些数据发送到网页,理想情况下使用json格式,并且我想知道哪种方法最好,以及为什么。总体而言,你与他们有什么好的或不好的经历和惊喜。在创建时将JSON发送到页面的最佳方式
<script>var myJson = <? echo json_encode($myVar); ?>;</script>
优势:JSON是直接在JavaScript中,是将使用它。
不方便:在html/dom中间的<script>
是坏的(js属于 到.js文件)。<div data-myJson='<? echo json_encode($myVar); ?>'>
优势:HTML5数据事情是容易的工作。
不方便: 在dom中的一堆数据,它看起来并不优雅注:在我的 的情况下,我可以承受忽略“旧”浏览器。ajax应有尽有。
优点:在这种情况下甚至不需要发送json,因为它 已经可用(无页面更改)。
不方便:不是 真的是一个选项,因为我需要重写整个网站。代替发送完整的json,将它存储在会话中并发送一个 密钥。
优点:少移动数据
不方便: 数据/会话情侣需要跟踪,我喜欢我的会议保持干净整洁。 (即使用户只是在流程完成前关闭该页面)(不会关闭会话)。饼干。
优点:herr ..是逆向邪恶的好东西吗?
不方便:像会话变量,但出笼。在会话中存储json,并在加载页面时加载jjax。
优点:概念上有点高雅。
不方便:沉重,因为ajax指令已将 添加到js文件中,并且必须管理该会话。 (和 已清理。如果页面加载没有完成,json将一直保留,直到我清理它或会话结束为止 )。再加上html header意味着更多的带宽,我们必须等待使用该对象的成功。- 其他?
编辑:因为似乎有点混乱,有选择3“阿贾克斯的一切”,我的意思一个页面加载,并所有内容通过AJAX加载,即使你通过菜单,指向其他页面的链接,表单提交等。我认为更传统的导航(由服务器作为新页面发送的页面),页面做一个ajax请求来检索服务器上的某个值(这里是我的json对象),作为第4点“会话”,作为主页数据必须在页面发送后由服务器保留,以便稍后由ajax请求获取。我为此添加了选项6。
第一个变体(I.E.函数调用,而不是变量赋值)很常用(例如:facebook),它属于.js文件而非JSON。顺便说一句,你不需要'JSON.parse'。 – Esailija
#1看起来有点难看,但我没有看到为什么它不能解决问题的原因,当然,如果JSON对象在页面的生命周期内不会改变的话。 – Blazemonger
谷歌在其谷歌加服务使用类似于您在自己的'变种OZ_initData'做(你可以看到,如果您查看网页的源代码),但数据是不完全的JSON,但不知何故类似于1号建议的东西。 – Nasreddine