eval 未结束字符串常量

速度4 2007-04-09 06:30:08
msg.responseText的值是{'msg':[{'a':'1','b':'测试1'},{'a':'2','b':'测试2'},{'a':'3','b':'测试3 '}]}

var newMsg = eval('('+msg.responseText+')');

为什么报错未结束字符串常量
...全文
519 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
matrixy 2007-04-10
  • 打赏
  • 举报
回复
*^_^*
meizz 2007-04-10
  • 打赏
  • 举报
回复
明明很简单的东西,自己非要很牛角尖里钻,硬是要在外面套上一个括号,干吗??

var str = "{'msg':[{'a':'1','b':'测试1'},{'a':'2','b':'测试2'},{'a':'3','b':'测试3 '}]}";
var ss;
eval("ss = "+ str);
alert(ss.msg)
meizz 2007-04-10
  • 打赏
  • 举报
回复
new Function 很晦涩吗?那我再用 eval:

var str = "{'msg':[{'a':'1','b':'测试1'},{'a':'2','b':'测试2'},{'a':'3','b':'测试3 '}]}";
eval("ss = "+ str);
alert(ss.msg)
tncboy 2007-04-10
  • 打赏
  • 举报
回复
to 楼主 and matrixy:
奇怪啊,我刚去测了一下帖的代码,没有问题啊!? 引不引号都一样
如下:
var str = "{'msg':[{'a':'1','b':'测试1'},{'a':'2','b':'测试2'},{'a':'3','b':'测试3 '}]}";
var newMsg = eval('('+str+')');
alert(newMsg)

to meizz大侠:
如果能eval搞定,非得要去用那种晦涩的Function吗? 这样改,我觉得看着都累
meizz 2007-04-10
  • 打赏
  • 举报
回复
别老是整天只想着 eval ,将字符串转换成脚本方法很多:

<SCRIPT LANGUAGE="JavaScript">
var str = "{'msg':[{'a':'1','b':'测试1'},{'a':'2','b':'测试2'},{'a':'3','b':'测试3 '}]}";
var f = new Function("return "+ str);
alert(f().msg)
</SCRIPT>
matrixy 2007-04-10
  • 打赏
  • 举报
回复
关键在于,此处他加上了引号才引起的那个错误!
tncboy 2007-04-10
  • 打赏
  • 举报
回复
msg这个key要不要引号,没所谓的。

两种改法:
var newMsg = eval('['+msg.responseText+']'); // 变成数组
或者
eval("var newMsg = " + msg.responseText); // 解释附值
matrixy 2007-04-10
  • 打赏
  • 举报
回复
把这个
{'msg':[{'a'
改成
{msg:[{'a'
不需要引号的
速度4 2007-04-10
  • 打赏
  • 举报
回复
这是ppjoke聊天程序的一段代码,已经想到其它方法搞定了,主要是利用AJAX做到无刷滚屏但又不想ppjoke那样复杂,所以自己尝试写了个程序。
tncboy 2007-04-10
  • 打赏
  • 举报
回复
晦涩的确只是我个人的感觉,见仁见智吧.
不过,如果按楼主的那种赋值方式,右边串中不加括号真是不行啊,报语法错...
adverse 2007-04-09
  • 打赏
  • 举报
回复
应该是单引号和前边的匹配了,这样改
var newMsg = eval(msg.responseText);

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧