我知道我可以像这样创建一个关联数组:
var MyAssocArray = {'sky':'blue', 'grass':'green'};
我非常喜欢使用这种方法。
我想做什么,遇到麻烦的是:
我保存了这样的字符串:
var MyString = "'sky':'blue', 'grass':'green'";
我希望现在能够做到这一点:
var MyAssocArray = {MyString};
当我尝试时 - 我收到此错误:
invalid object initializer
我做错了什么? 我怎样才能做到这一点? 任何帮助将不胜感激
使用PHP和Javascript找到不同的解决方案。关联数组字符串在javascript
中回显var Multidimensional_Arr[Multidimensional_Array_Key_Name] = {<?php echo $String_Pulled_From_Database; ?>}; // i.e. 'sky':'blue', 'grass':'green'
//Same can be done for single dimension array
var My_Single_Dime_Arr = {<?php echo $String_Pulled_From_Database; ?>}; // i.e. 'sky':'blue', 'grass':'green'
我希望它对某人有帮助
答案 0 :(得分:4)
使用JSON - 它是序列化的Javascript Object Notation,非常接近你正在做的事情。
你需要做
var MyAssocArray = JSON.parse(MyString);
此外,JSON使用双引号,而不是单引号;如果您使用简单对象,您可以编写代码,只需在字符串中用'
替换"
,但如果字符串包含双引号则很棘手。
编辑:如果您使用的浏览器没有实现JSON.parse(),您可以使用JSON网站上的实现(请参阅links at bottom of this page),或者如果您使用的是jQuery,那么{ {3}}
编辑#2:警告:除非您确定数据库中的数据已经过清理,否则您的解决方案存在安全风险:
var My_Single_Dime_Arr = {<?php echo $String_Pulled_From_Database; ?>}
这相当于对eval()
的调用;如果您的数据库字符串有任何恶意代码,它可以做坏事。这就是为什么发明JSON的一个原因 - 在评估之前很容易确保其内容有效(因此是安全的)。
您提供给我们的整体架构是[数据库中的数据] - &gt;服务器端PHP - &gt;客户端Javascript。这是序列化数据的典型示例。我意识到你可能有限制让你的系统不间断地运行,但严格的序列化格式会让你的系统更安全。
答案 1 :(得分:0)
如果您确定数据是安全的,那么您可以这样做:
var MyAssocArray = eval('{' + MyString + '}');
答案 2 :(得分:-1)
你不能这样做。
要实现您想要的功能,请使用split()函数将字符串首先拆分为逗号分隔的标记。然后,每个令牌应进一步由&#39;:&#39;字符。 然后将最后一次拆分获得的两个标记作为关联数组的键和值。