Odysseus_110 发表于 2013-2-7 19:25:59

读取json数据

最近做的东西想要用js直接读取json格式的文件,读取的文件是标准的json格式,所以直接采用eval函数得到数据。
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Example: Number menu</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><SCRIPT LANGUAGE="JavaScript"><!--//alert("gsgd");var xmlDoc=null;var date = new Date();function createXMLHttpRequest(){if(window.XMLHttpRequest){xmlDoc = new XMLHttpRequest();}else if(window.ActiveXObject){xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");}else{return;}}function loadIndex(){createXMLHttpRequest();xmlDoc.onreadystatechange = function(){      if(xmlDoc.readyState == 4){if(xmlDoc.status==200){var tvdata = xmlDoc.responseText;var result = eval('(' + tvdata + ')');//eval(tvdata);var testhanzi = result.data.chname;document.getElementById("testh1").innerHTML=testhanzi;//}}      }    }    xmlDoc.open("GET","tvdata.txt",true);    xmlDoc.send(null);}//--></SCRIPT></head><body ><div id="mainpage"><div class="today">     <h1 id = "testh1" style="color: red">ss</h1></div></div><SCRIPT LANGUAGE="JavaScript">loadIndex();</SCRIPT></body></html> 文件数据:
({    data:[  {      chnum:"1",  chid:"61033",       chname:"香港翡翠",  fshowdata:"00:00 午夜新闻1% 00:30 新闻1+1:时事开讲"  },  {       chnum:"2",  chid:"61242",       chname:"香港本港",  fshowdata:"00:00 午夜新闻2% 00:30 新闻1+1:时事开讲"  },  {      chnum:"3",  chid:"61251",       chname:"风云足球",  fshowdata:"00:00 午夜新闻3% 00:30 新闻1+1:时事开讲"  },  {       chnum:"4",  chid:"61247",       chname:"星空传媒",  fshowdata:"00:00 午夜新闻4% 00:30 新闻1+1:时事开讲"  },  {       chnum:"5",  chid:"61253",       chname:"星空卫视",  fshowdata:"00:00 午夜新闻5% 00:30 新闻1+1:时事开讲"  }  ]})  
由于是读取文件,不是从服务器上获取数据,服务器端的输出控制类似 response.setCharacterEncoding("UTF-8"); 发现只要是有中文字符,galio浏览器就读取文件后就认为这里的json格式有错误。所以想到的办法就是把文件先转码,再读取,用
http://www.zzsky.cn/tool/utf-8/
或者
http://hi.baidu.com/st9489/blog/item/743e6ccbd13a4a1ebf09e617.html
的方法都行,转换之后的数据文件:
 
{    "data":[{      "chnum":"1","chid":"61033","chname":" 香港翡翠","fshowdata":"00:00 午夜新闻1% 00:30 新闻1+1:时事开讲"      },{      "chnum":"2","chid":"61072","chname":" 香港翡翠","fshowdata":"00:00 午夜新闻1% 00:30 新闻1+1:时事开讲"      },{      "chnum":"3","chid":"61074","chname":" 香港翡翠","fshowdata":"00:00 午夜新闻1% 00:30 新闻1+1:时事开讲"      },{      "chnum":"4","chid":"61075","chname":" 香港翡翠","fshowdata":"00:00 午夜新闻1% 00:30 新闻1+1:时事开讲"      },      ]} 读取到这些数据后设置gb2312(转换的时候是转换成utf-8)
content="text/html; charset=gb2312"document.getElementById("testh1").innerHTML=testhanzi然后直接用innerHTML  就可以显示汉字,这里如果用
document.getElementById("testh1").appendChild(document.createTextNode(testhanzi));就会显示的是编码。
 
 
页: [1]
查看完整版本: 读取json数据