- 本文地址: https://www.laruence.com/2008/09/01/492.html
- 转载请注明出处
当你使用ajax的时候,json是一个很方便的数据传输手段.
但是对于很多人来说,经常会遇到的一个很令人头疼的问题就是"invalid label"错. 明明json串看起来是对的,怎么还会出错呢?
比如,如下的代码:
function handle_success(response){ var json = eval(response); // response = "{'foo' : 'bar'}"; }
浏览器会报,invalid label错, 这是因为, eval会尝试将你的response解释为一个label, 当你在脚本中直接写:
<script> {'foo' : 'bar'}; </script>
会报错的原理是一样的.
解决办法有俩个:
var json = eval('(' + response + ')'); // response = "{'foo' : 'bar'}";
或者
eval('var json = ' + response); // response = "{'foo' : 'bar'}"; //json is available now
解决问题了
[…] Js處理Json的"invalid label"錯 […]
还有一种方法是加上这句话:
dataType : “json”,
希望对后人有帮助
还有一种方法是加上这句话:
dataType : “json”,
希望对后人有帮助
还有一种方法是加上这句话:
dataType : “json”,
希望对后人有帮助
还有一种方法是加上这句话:
dataType : “json”,
希望对后人有帮助
今天试了下,发现第一种方法比较好用,第二种方法可能会出错,例如我返回的是”\t\n\t\n {“name”:”hello”}”;(可能其他原因造成的多返回了几个换行符),这时第二种方法就获得不到那个json对象啦
它困绕我几个小时了,现在按照你提供的方法做,可以了,谢谢!
呵呵,这篇文章都被我抠出来了
其实鸟哥您写这个理论上不是严格意义的 JSON, 应该算是 JavaScript 的 Object Literal吧。所以也能体现出和JSON一样的功能。JSON 与法规定 String 必须放在 双引号里面,单引号是不行的。以前看 ECMA-262 还是 RFC文档里面定义过,不太记得了。
用 json2.js 的parse 验证一下, “{‘foo’ : ‘bar’}” 这个一定不是 JSON, ‘{“foo” : “bar”}’就对了。
@Anonymous 构建一个Function这个办法挺新颖, 赞.
现在都不建议用eval了,解析JSON,可以用这个
function jsonDecode(data){
return (new Function(“return ” + data))();
}
其他要想实现类似的eval的功能,一般都是在DOM中创建一个script节点,然后script.text = data;
jQuery1.4中就是如此,其他好几种Javascript框架都是这么做的。
我也遇到了这个问题。
看来这个问题还是很普遍的~ , 😉
十分感谢你,我也遇到了这个问题。
谢谢,不错,我也遇到这个问题,看了你这篇文章后解决了