日期:2014-05-16  浏览次数:20311 次

关于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即可,没错误