一个使用静态JSON数据的整洁解决方案

时间:2009-11-30 20:12:44

标签: javascript json

我正在开发一个简单的JavaScript(jQuery)幻灯片放映。我想使用JSON存储一些关于每张幻灯片内容的静态参数。

由于我喜欢将我的数据与我的代码分开,所以有没有让JavaScript评估.json文件?

  • AJAX似乎有点矫枉过正 - 它只需要在运行时进行评估,没有什么是动态的。
  • 我可以有一个单独的.js文件,它将我的JSON数据作为对象保存 - 但这看起来很麻烦。

所以在我使用上述解决方案之前,我只是想确保没有更简洁的方法让JavaScript评估文本文件。

3 个答案:

答案 0 :(得分:8)

为对象设置单独的js文件有什么问题?它必须住在某个地方。我同意ajax是矫枉过正的,但我不知道为什么你认为.js文件中的JavaScript对象“混乱”。

答案 1 :(得分:4)

评估JSON非常简单:

var jsonString = "{'name': 'Joe', 'age': 36}";

var data = eval('(' + jsonString + ')');
data.name // 'Joe'
data.age  // 36

存储此数据的最简单方法是将其放在<input type="hidden">中,然后使用document.getElementById('hiddenElementId').value进行阅读。


完整图片:

<强> HTML

<input type="hidden" id="hiddenElementId" value="{'name': 'Joe', 'age': 36}" />

<强> JS

function getData() {
     var jsonString = document.getElementById('hiddenElementId').value;
     var data = var data = eval('(' + jsonString + ')');
     return data;
}

实际上不必是hidden元素 - 您可以将其放在其中一个图像的属性中。


另一种选择是将其粘贴到某个名称下的<script>标记中。

<script type="text/javascript">
    var data = {'name': 'Joe', 'age': 36};
</script>

这种方式data成为一个全局变量(我不喜欢这样的东西),可以在任何地方使用。这是一个简单的解决方案,但有点凌乱 - 我会选择第一个。

答案 2 :(得分:1)

J-Query有一个解析JSON函数,甚至可以在IE中运行..

$.parseJSON("{'json':'rules for data'}");

享受..

但只是一个如何让它整洁的问题:

FUNCTION_HOWTO({json:'test',p2:'part2'}) = {
    json:'test',
    p2:'part two'
}