Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用静态JSON数据的整洁解决方案_Javascript_Json - Fatal编程技术网

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

Javascript 使用静态JSON数据的整洁解决方案,javascript,json,Javascript,Json,我正在开发一个简单的JavaScript(jQuery)幻灯片。我想使用JSON存储一些关于每张幻灯片内容的静态参数 因为我喜欢将数据与代码分开,所以有必要让JavaScript对.json文件求值吗 AJAX似乎有点过头了——它只需要在运行时对其进行评估,没有什么是动态的 我可以有一个单独的.js文件,将我的JSON数据作为一个对象保存,但这看起来很混乱 因此,在使用上述解决方案之前,我只想确保没有更干净的方法让JavaScript对文本文件求值。为对象使用单独的js文件有什么不对?它必须

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

因为我喜欢将数据与代码分开,所以有必要让JavaScript对.json文件求值吗

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

因此,在使用上述解决方案之前,我只想确保没有更干净的方法让JavaScript对文本文件求值。

为对象使用单独的js文件有什么不对?它必须住在某个地方。我同意ajax有点过分,但我不明白为什么你认为.js文件中的JavaScript对象“凌乱”。评估JSON非常简单:

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

var data = eval('(' + jsonString + ')');
data.name // 'Joe'
data.age  // 36
存储此数据的最简单方法是将其放入
中,然后使用
document.getElementById('hiddenElementId').value来读取它


全貌:

HTML

<input type="hidden" id="hiddenElementId" value="{'name': 'Joe', 'age': 36}" />
实际上不必是
隐藏的
元素-您可以将其放入其中一个图像的属性中


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

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

变量数据={'name':'Joe','age':36};

这样,
数据
就变成了一个全局变量(我不太喜欢这个变量),可以在任何地方使用。这是一个简单的解决方案,但有点混乱——我会选择第一个解决方案。

J-Query有一个解析JSON函数,甚至可以在IE中使用

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

但问题是如何使它整洁,比如:

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

同意。将它存储在JS文件中类似于将它存储在任何其他地方——想想配置文件或XML,等等——这没什么错。事实上,它让你的生活不那么混乱!所以你不希望它出现在你的代码中,被代码检索,或者被链接?这很好地将其保留在一个隐藏的输入中,甚至更为俗气。我支持这些人:一个外部的.js是最干净的选择。啊,好吧,它不是非常混乱,这就是我所倾向的-我只是不确定是否有一种更干净的方法来评估一个文件,这样你的数据才真正与你的代码分开。我的意思是有一个.js文件,其中var JSON=“…”;这不是什么大不了的事,但它有点违背了整个语义网的思想,不管其他人是否会重用这些数据。幻灯片的数据是如何存储的?要计算JSON字符串,可以使用
JSON.parse(string)
虽然我不了解IE.Fr,但如果使用JSON库,所有浏览器都可以使用JSON.parse。大多数人不赞成这种评价。较新的浏览器具有“安全”解析。
FUNCTION_HOWTO({json:'test',p2:'part2'}) = {
    json:'test',
    p2:'part two'
}