最近做的东西想要用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[0].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));
就会显示的是编码。