读取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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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]