我有以下结构的数据:
唯一ID (int) \n第一个名称(字符串)\##*##.
一组数据可能如下所示:
1-约翰·汉考克
2-约翰-汉考克- 95.0
简汉考克89.5
简·汉考克73.5
简·汉考克- 96.5
弗莱德·弗林特斯通45.8
我需要的是将这些数据存储在客户端,这样浏览器就可以访问这些数据,并且可以使用jQuery进行操作。
例如,我在页面上有一个下拉列表(select),其中包含三个值:
1)低百分位数
2)中间百分位数
3)高百分位数
当用户选择下拉列表中的一个值时,我需要能够从上面的数据中选择符合所选值的项。例如,如果他们选择低百分位数值,那么我需要从百分比小于60%的数据中检索所有项目。
我在jQuery方面相当多才多艺,但我从来没有用它来存储任何这样的东西,以供客户端检索。我是否可以以某种方式将这些数据存储在客户机端的JSON对象中,而这些对象又可以随意选择和操作?
发布于 2013-03-12 15:46:39
所以基本上:
var javascriptObject = $.parseJSON(jsonString);
var jsonString = JSON.stringify(javascriptObject);
JavaScript和其他OOP非常相似。
var foo = {}; //NEW Object
foo.bar = 1;
foo.bars = 2;
foo.bar.date = 3;
var jsonString = JSON.stringify(foo);
//jsonString is now a "JSON Object" that holds the data found in object foo.
console.log(jsonString); //To see what it looks like.
但是,如果所有这些都用于客户端,那么只需使用JavaScript对象即可。不需要将它们转换为JSON。JSON对象实际上用于将数据发送到其他源,因为它们是字符串。通常用于AJAX请求。
基于注释的编辑
$(document).ready(function(){
var globalObject = {};
globalObject.foo = 1;
globalObject.bar = 2;
$(el).change(function(){
globalObject.foo = $(this).val();
});
});
发布于 2013-03-12 15:51:16
JSON代表Javascript对象表示法。如果您熟悉对象,您应该能够使用它。
对于您的示例,我可能会将变量保存为一个对象数组(因为它是先编号的)。希望您不会介意将数字重新分配到基于零的增量(0、1、2.)。
也许你可以这样做,如果你想把它保存在客户端:
var data = [
{ fname : "John", lname : "Hancock", value : 49.5 },
{ fname : "John", lname : "Hancock", value : 95.0 }
];
这只是前两个例子。然后,您可以使用for循环for(var i=0, count = data.length; i < count; i++)
在数组中进行迭代,并对数据执行一些操作(如果是data[i].value < 60
)。
jQuery有一个很好的函数,名为.each(),您也可以很容易地使用它。另外,如果需要的话,可以将JSON保存在.json文件中并由jQuery.getJSON()调用。这两者都可能是了解这一点的良好开端。
发布于 2013-03-12 15:56:31
虽然我对这个答案并不感到骄傲,但它可能会满足你的需要。它还不要求浏览器具有HTML5本地存储。
<input type="hidden" id="json_data" />
<script type="text/javascript>
var theData = [
{
id: 1,
firstName: 'John',
lastName: 'Hancock',
pct: 49.5
},
// other objects
{
id: 6,
firstName: 'Fred',
lastName: 'Flintstone',
pct: 45.8
}
];
var dataAsJsonString = JSON.stringify(theData);
$('#json_data').val(dataAsJsonString); // store data in hidden field
// later on...
var getDataBackOut = $.parseJSON($('#json_data').val());
// you can now iterate over the array to find what you need
</script>
https://stackoverflow.com/questions/15365589
复制相似问题