关于getjson的问题
最近遇到个问题很头疼,就是我用getjson读本地json文件的时候,只有用jquery-1.3.2-min.js才能读出来,而且只在firefox下读的出来。用其他版本的jquery,在任何浏览器下都没法读出来。
下面是代码:
$.getJSON("basic.json", function(data){
$.each(data.CaseResult, function(i,item){
var list = new Array();
list.push(item.name);
});
});
还很奇怪的是在
list.push(item.name); 这一行,在IE8下会报错,说name是null或者not object,如果用list.push("asafdas");这样的常量字符串就可以。很费解。
我的json文件大概是这样的
{"CaseResult": [{"name":"0010."}, {"name":"0004."},]}
哪位高手能解释下是为什么? 还有如果有些browser限制访问本地文件的话,我如果把json文件放到一个http服务器上,比如通过http://192.168.1.100/basic.json访问的到,那么在getjson里我要怎么写才能拿到数据,貌似直接写地址是不行的。
------解决方案--------------------你这个我本地运行没问题,jquery1.8.3,完全copy你的代码,没错,环境是xp+IE8
另外browser的问题,IE支持本地访问,chrome不支持
放到服务器http上,IE和chrome都支持,http://192.168.1.100/basic.json直接复制到浏览器里,只要浏览器里能访问到,getJson就能访问到
[code=html]<!DOCTYPE HTML>
<html>
<head>
<title> New Document </title>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<script type="text/javascript">
$.getJSON("basic.json", function(data){
$.each(data.CaseResult, function(i,item){
var list = new Array();
list.push(item.name);
alert(list);
});
});
</script>
</body>
</html>
把{"CaseResult": [{"name":"0010."}, {"name":"0004."}]}直接存为文本,改文件名为basic.json即可,没错误