最近遇到个问题很头疼,就是我用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里我要怎么写才能拿到数据,貌似直接写地址是不行的。

解决方案 »

  1.   

    你这个我本地运行没问题,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即可,没错误
      

  2.   

    我找到问题原因了,原来是我的json文件格式有问题。我把文本拷贝了再存为文件就可以读取了