我需要向网页发送一些数据,最好是 json 格式,我想知道哪种方法最好,为什么。总体而言,您与他们有什么好的或坏的经历和惊喜。
<script>var myJson = <? echo json_encode($myVar); ?>;</script>
优点:json直接在javascript中,会用到。
不便:<script>
在 html/dom 中间是坏的(js 属于 .js 文件)。<div data-myJson='<? echo json_encode($myVar); ?>'>
优点:html5 数据很容易处理。
不方便: dom 中的一堆数据,看起来并不优雅注意:在 my 在这种情况下,我可以忽略“旧”浏览器。ajax 一切。
优点:在这种情况下甚至不需要发送 json,因为它 将已经可用(没有页面更改)。
不方便:不 确实是一个选择,因为我需要重写整个网站。不是发送完整的 json,而是将其存储在 session 中并发送一个 key 。
优点:移动的数据较少
不方便: 需要跟踪数据/ session 对,我希望我的 session 保持干净整洁。 (即使用户只是在流程结束之前关闭页面 完成)(不会关闭 session )。Cookie。
优点:呃……逆邪是好事吗?
不方便:类似于 session 变量,但不在笼子里。将 json 存储在 session 中,并在页面加载时使用 ajax。
优点:概念上有点优雅。
不方便:重,因为ajax指令有 要添加到 js 文件,并且必须管理 session 。 (和 净化。如果页面加载没有完成,json 将一直保留到 我清理它或 session 结束)。加上 html header 意味着更多带宽,我们必须等待成功才能使用该对象。- 其他?
编辑:因为似乎有点困惑,选项 3“ajax everything”我的意思是一个页面加载,所有内容由ajax加载,即使您浏览菜单、链接到其他页面、提交表单等。我考虑了一个更传统的导航(服务器作为新页面发送的页面),页面执行 ajax 请求以在服务器上检索一些值(这里是我的 json 对象),作为第 4 点“ session ”,作为发送页面后,主要数据必须保留在服务器上,以便稍后由 ajax 请求获取。我确实为此添加了选项 6。
最佳答案
我毫不犹豫地推荐#1。你想在 javascript 中使用你的数据,对吧? #1 是确保您的数据在页面加载时作为普通旧 javascript 对象存在的最简单和最直接的方法。我一直以这种方式将数据从服务器端传输到浏览器端,而且效果很好。
您可以通过在 ajax 调用中加载数据来更好地分离数据和 UI,但这是一个额外的 http 请求,会减慢您的页面加载速度。
关于javascript - 在创建时将 JSON 发送到页面的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8155193/