Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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 Associateva数组-将字符串作为数组键:值对传递_Javascript_String_Key_Associative Array - Fatal编程技术网

JavaScript Associateva数组-将字符串作为数组键:值对传递

JavaScript Associateva数组-将字符串作为数组键:值对传递,javascript,string,key,associative-array,Javascript,String,Key,Associative Array,我知道我可以创建如下关联数组: var MyAssocArray = {'sky':'blue', 'grass':'green'}; var MyString = "'sky':'blue', 'grass':'green'"; 我非常喜欢用这种方法 我想做的事情和遇到的问题是: 我保存了如下字符串: var MyAssocArray = {'sky':'blue', 'grass':'green'}; var MyString = "'sky':'blue

我知道我可以创建如下关联数组:

var MyAssocArray = {'sky':'blue', 'grass':'green'};
var MyString = "'sky':'blue', 'grass':'green'";
我非常喜欢用这种方法

我想做的事情和遇到的问题是:

我保存了如下字符串:

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'

// The same can be done for a one-dimensional array
var My_Single_Dime_Arr = {<?php echo $String_Pulled_From_Database; ?>}; // i.e. 'sky':'blue', 'grass':'green'
var多维数组[多维数组\u键\u名称]={};//i、 e.“天空”:“蓝色”,“草”:“绿色”
//对于一维数组也可以这样做
var My_Single_Dime_Arr={};//i、 e.“天空”:“蓝色”,“草”:“绿色”
使用——它是序列化的JavaScript对象表示法,非常接近您正在做的事情

你需要这样做

var MyAssocArray = JSON.parse(MyString);
此外,JSON使用双引号,而不是单引号;如果使用简单对象,您可能可以编写代码,将字符串中的
”替换为
”,但如果字符串包含双引号,则会很棘手

如果您使用的浏览器未实现JSON.parse(),则可以在JSON网站上使用该实现(请参阅),或者如果您使用的是jQuery,则会出现以下情况


警告:您的解决方案存在安全风险,除非您确定数据库中的数据已被清除:

 var My_Single_Dime_Arr = {<?php echo $String_Pulled_From_Database; ?>}
var My_Single_Dime_Arr={}
这相当于调用
eval()
;如果您的数据库字符串中有任何恶意代码,它可能会做坏事。这就是JSON被发明的原因之一——在评估之前,很容易确保其内容是有效的(因此是安全的)

正如您向我们介绍的那样,您的总体架构是[数据库中的数据]->服务器端PHP->客户端JavaScript。这是序列化数据的经典示例。我知道您可能有一些限制来保证系统不中断运行,但严格的序列化格式会使系统更安全。

您不能这样做

要实现所需的功能,请首先使用split()函数将字符串拆分为逗号分隔的标记。然后,每个标记应进一步由“:”字符分割


然后,将最后一次拆分获得的两个令牌作为关联数组的键和值推送。

如果您确定数据是安全的,则可以执行以下操作:

var MyAssocArray = eval('{' + MyString + '}');

除了,JSON对象真的可以在没有浏览器支持警告的情况下被推荐吗?另外-我发现了另一种方法:因为字符串正在从数据库中拉出-我发现我可以使用PHPYeah填充javascript关联数组。。这对我不起作用。我尝试了它,但得到了一个错误--“无效标签”,不幸的是,如果任何字符串键或值中有逗号,该错误将不起作用。