解决遍历json时length找不到对象问题
2012-10-17 10:33
316 查看
<script type="text/javascript"> //1.首先json 格式一定要这样写,尽管说这只是其中的一种方式 var json = {"options":"[{\"text\":\"王家湾\",\"value\":\"9\"},{\"text\":\"李家湾\",\"value\":\"10\"},{\"text\":\"邵家湾\",\"value\":\"13\"}]"} json = eval(json.options)// 注意options,如果不写Options ,下面的写法就是json.options.length for(var i=0; i<json.length; i++) { alert(json[i].text+" " + json[i].value)//访问 } </script>
注意:正常情况下以上方法都可以遍历,但是如果json是作为一个参数传进来的话,如下
$.ajax({
type: "POST",
url: "jsonAjax.htm",
data: {oname:subA.innerHTML},
dataType:"text", //ajax返回值设置为text(json格式也可用它返回,可打印出结果,也可设置成json)
success: function(json){
alert(json);
//比如这里输出的是{"options":"[{\"text\":\"王家湾\",\"value\":\"9\"},{\"text\":\"李家湾\",\"value\":\"10\"},{\"text\":\"邵家湾\",\"value\":\"13\"}]"} ,格式数据完全相当,但是如果不加上红色这句话,就会出现length为空或不是对象,或者 火狐中报出json undefind的错误
json = JSON.parse(json);//需要加上这一句
json = eval(json.options);
alert(json.length);
for(var i=0; i<json.length; i++)
{
//do something
}
},
error: function(json){
alert("json=" + json);
return false;
}
});
注意:JSON.parse在IE8下面会报错,说JSON未定义,解决方法如下(转自孟宪会 的BLOG)
方法1:定义<!DOCTYPE>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>孟宪会:JSON测试</title>
</head>
<body>
<script type="text/javascript">
alert(typeof JSON);
</script>
</body>
</html>
方法2:设置X-UA-compatible 标头
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
<title>孟宪会:JSON测试</title>
</head>
<body>
<script type="text/javascript">
alert(typeof JSON);
</script>
</body>
</html>
或者
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" >
<title>孟宪会:JSON测试</title>
</head>
<body>
<script type="text/javascript">
alert(typeof JSON);
</script>
</body>
</html>
在实际编程程序的时候,最好的办法是进行判断,如果不支持原生的JSON,那么就是要json2.js提供的对象即可
相关文章推荐
- JSON调试找不到 net.sf.ezmorph.Morpher问题解决
- 1:HTML 中 onclick 触发函数 xxx(param) 要传递对象参数的解决方法 2:LocalStorage存储JSON对象的问题 3:ajax请求传送参数为对象问题
- js中json对象不规律key的遍历实现和json对象length属性的调用
- js中json对象不规律key的遍历实现和json对象length属性的调用
- 解决使用JavaScriptConvert转换对象为Json时,中文和&符号被转码的问题
- js中json对象不规律key的遍历实现和json对象length属性的调用
- js中json对象不规律key的遍历实现和json对象length属性的调用
- 解决对象与JSON解析时属性不对应+空字符串+枚举的问题
- hibernate+spring mvc, 解决hibernate 对象懒加载 json序列化问题
- js中json对象不规律key的遍历实现和json对象length属性的调用
- JSON调试找不到 net.sf.ezmorph.Morpher问题解决
- 解决springmvc,@Response注解返回json对象出错问题
- Spring Mvc 返回Json对象给前端报 406 (Not Acceptable) 问题解决
- 在解决spring mvc 返回json对象 ie浏览器访问会出现下载文件问题的解决方案
- 解决@ResponseBody返回字符串中文json对象??问题
- js中json对象不规律key的遍历实现和json对象length属性的调用
- 解决json序列化有多对一和多对多关系的对象时造成死循环的问题
- JSON调试找不到 net.sf.ezmorph.Morpher问题解决
- json解决hibernate中级联对象延迟加载问题net.sf.json.JSONException: org....
- js中json对象不规律key的遍历实现和json对象length属性的调用