关联数组不能与eval() JavaScript一起工作
Associative Array does not work with eval() JavaScript
我正在生成一个表示为Python字典的数据,该数据使用simplejson通过url转储,该url是这种格式。
{"2": "London", "3": "Tokyo", "4": "Sydney"}
我使用$.get
并存储到变量数据中。但是eval(data)
不生成关联数组。实际上抛出了一个错误。有什么问题吗?解决方案是什么?
您的错误是因为在语句开头的{
被读取为代码块(就像您在if
s和for
s中使用的那种),而不是作为对象字面量。你可以用圆括号括住eval,让它按你想的做:
eval('(' + str + ')');
当然,eval是邪恶的,你应该使用像JSON.parse
这样的东西来代替。大多数新浏览器都有这个功能,不仅更安全而且更快。
我们需要看到更多的代码…
var x = '{"2": "London", "3": "Tokyo", "4": "Sydney"}';
eval('var y = ' + x);
// or
var y = eval('(' + x + ')');
console.log(y);
console.log(y["2"]);
上面的工作很好。你到底在做什么/没做什么?
PS:无论如何你都不应该使用eval
,但重要的是要知道它是如何工作的
eval
速度慢,效率低,难以调试。别用它。
让你的脚本输出一个application/json
内容类型的头,jQuery会自动将JSON转换为JS对象
请记住,您正在评估JavaScript代码而不是JSON。从它的外观来看,您的字符串将计算为一个块,但第一部分在语法上是不正确的。("2":
接近一个带标签的语句,但没有雪茄。)您需要将字符串包装在括号中,以将其视为对象字面值。
使用jquery的$.get()函数,你可以告诉它期望返回一个json字符串(将'dataType'设置为"json"),它会为你创建一个对象,不需要eval()
相关文章:
- 如何将索引数据库与 Metrostyle Javascript 一起使用
- 如何将html中select选项的输入与javascript一起使用
- 与javascript一起使用RequiredFieldValidator
- 如何用JavaScript中的Ajax调用代替加载脚本文件(将YQL与JavaScript一起使用)
- 防止将IE8与JAVASCRIPT一起使用
- CSS 缩放在起点和终点之间与 javascript 一起使用
- PHP和Javascript一起工作
- 如何将CSS与javascript一起使用
- 如何将 django-comments 表单与 javascript 一起使用
- 未能将加速度计与 HTML 和 JavaScript 一起使用
- 如何将PostgreSQL与JavaScript一起使用
- 在选择列表中将创建的属性与 javascript 一起使用
- HTML 不能与 JavaScript 一起使用
- 如何将“display:none”与jquery或javascript一起使用
- 如何将pubnub密钥与Corona和Javascript一起使用
- HTML5与javascript一起解析和显示文本文件
- 如何将css代码存储在与Javascript一起使用的php变量中
- 将可变thisarg或上下文与javascript一起使用有什么危险
- Html生成的JavaScript无法与其他JavaScript一起使用
- 与外部javascript一起传递的php脚本不起作用