2011-09-08 71 views
0

我有一个谷歌地图,用户在各个位置放置标记。我在一个窗体上单击事件显示一个jQuery对话框,其中用户将填写与标记有关的其他细节。 现在我需要使这个数据保持:JavaScript中的键值数据结构

1]我需要将标记(以及细节)存储到窗体的隐藏字段,所以我的服务器可以解析它并填充数据库。东西就行了:

markerData = JSON.stringify($('#dialog' + markerId).serializeObject()); // the form 
.. add the markerData with key as markerId to a global javascript variable .. 
$('#markersList').val(JSON.stringify("the global var")); 

注: $('#dialog' + markerId)唯一标识标记对话框(它的形式)

2]我需要从数据库中检索值,并形成串即会置于隐藏的领域。这是编辑/查看页面所必需的。

基本上我需要在JavaScript中的数据结构(键/值)其中markerId是关键和表单元素的值,并且我需要一种方法来转换服务器可解析的格式中的所有值(通过隐藏字段)反之亦然。

回答

1

什么:

var keyValuePairs = [{ "key1": "value1" }, { "keyN": "valueN" }]; 
alert(keyValuePairs["key1"]); 

或者只是:

var keyValuePairs = {}; 
keyValuePairs["key1"] = "value1"; 
keyValueParis["keyN"] = "value2"; 
alert(keyValuePairs["key1"]); 

UPDATE: 如果要发布此关联数组作为JSON在一个隐藏字段,只是字符串化数组使用您选择的JSON库并将JSON文本设置为整个隐藏字段。

+0

请不要将'new Array()'用于关联数组应该使用'{}'。 – Shurdoof

+0

@Shurdoof,有什么理由吗?或者这只是你的意见..? –

+0

感谢Matias,但是我需要以一种方式将所有值(“value1”,“valueN”)存储在隐藏字段中,以便我可以在服务器端解析它并填充数据库。 (我正在使用php) – CodeRain

0

javascript中的所有对象都是键/值对。你还需要什么?你可以把它像:

只要给定markerId你有formElements规定,只是做

userInput[markerId] = formElements 

这是相同的定义一个变量

var userInput = {} 

,如果你想编写代码时有一个具体的ID(如Id1)并且写入

userInput.Id1 = formElements 

所以在那之后你有userInput对象的属性名称等于你的ID(键),并且值等于用户定义的表单元素 - 正是你需要的,对吧?