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