我已经做了你想做的事,这是我的经验。我在工作中使用 Oracle 的 Site Studio 中间件。我寻找一个可以使用它的框架,但找不到。所以我尝试了以下两种选择。
1) 数据库查询返回一定数量的行。我尝试了 2,000 个作为测试。一个简单的 foreach 循环将返回的数据转换为 JSON 数据。因此,当它遍历行时,它实际上会构建一长串 JSON 变量。通过这种方式,您正在模仿本地 dababase 的快照。 JS 实际上可以非常快速地访问数组元素,您可能会惊讶于排序、更改、删除信息的速度。
<script>
var appData = [{'id':'0','first':'Sam','last':'Smith'},{'id':'1','first':'Dan','last':'Smith'}];
</script>
此 JSON 数据包含在脚本标记中。 doc.ready 上的 JQuery 然后读取数据并根据需要将其添加到 html 文本中。当用户更改 JSON 数据值时,ajax 会触发并将更改保存到数据库。将这样的系统添加到您的应用程序中并不难。我后来使用 Google 的 Angular.js 将数据绑定到 UI 以拥有一个干净的 MV 模式,并且它也很容易进行快速的客户端排序和过滤。如前所述,Backbone.js 和其他 JS 框架可以将客户端数据同步到服务器。
2) 我将数据保存到 html 页面的第二种方法是再次使用 foreach 循环遍历返回的行。然后我使用老式的
将数据保存在 HTML 中
<input type="hidden" name="someName" value="someValue" />
然后我使用 JQuery 处理数据并将其添加到 UI。如果你真的想使用 JSON,你可以像这样将它嵌入 HTML 变量中
<input type="hidden name="row1" value="{'color':'red','style':'fancy','age':'44'}" />
然后您可以使用 JQuery 或 Angular.js 处理数据并将其绑定到您的 UI。
有趣的是,很多应用程序框架都没有内置的客户端缓存系统。在服务器端对选择菜单进行排序然后重新构建 html 确实效率低下。最好在 JS 中对其进行排序并动态重建选择菜单。这里存在安全问题,您不希望将私有信息打印到 JSON 或 HTML 变量中,因为它在查看源代码下可见。您还可以使用更多流氓技术将数据嵌入页面。考虑如下:
<span class="data" value="1234"></span>
$(function () {
$('.data').each( function() {
var val = $(this).attr('value');
console.log(val); //process data
});
});
然后您可以在 doc.ready 上使用 JQuery 来处理名为数据的类。您还可以将 JSON 数据填充到值中,然后再将其解析出来。请记住,JQuery 人员反对以这种方式使用类的开发人员。根据我的经验,如果你不过度使用它,它会很好。