ajax已經(jīng)是web開(kāi)發(fā)的必選框架之一,而json更是在ajax通過(guò)解析xml來(lái)傳輸數(shù)據(jù)方面有了更好的發(fā)展,下面我就以自己做web開(kāi)發(fā)的淺薄經(jīng)驗(yàn)介紹一下js與struts
如何通過(guò)aja以json數(shù)據(jù)形式進(jìn)行數(shù)據(jù)傳輸。why json but not xml?這個(gè)問(wèn)題我想您會(huì)得到答案。
注:要使用json必須導(dǎo)入commons-beanutils-1.7.0.jar commons-lang-2.1.jar
ezmorph-1.0.2.jar json-lib-1.1-jdk15.jar另外commons-collentions最好用最新版本
1:既然是異步那我就用到了ajax框架,下面時(shí)jsp頁(yè)面中ajax框架代碼和js中解析json的方法
try
{
var xmlhttp = new XMLHttpRequest();
}
catch(e)
{
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
var url="/apple/receive.do;
xmlhttp.open('GET',url,true);
xmlhttp.onreadystatechange = function() 異步傳輸成功時(shí)
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
var data = eval('('+xmlhttp.responseText + ')'); //或得json數(shù)據(jù)
for(var i=0;i<data.js.length;i++) 循環(huán)輸出json中的數(shù)據(jù)
{
var str='’;
str+=data.js[i].chatdate;
str+=data.js[i].message";
txt=document.createElement('DIV');
txt.innerHTML=str;
document.getElementById("content").appendChild(txt);
str="";
}
}
}
xmlhttp.send();
2:下面試action中json的組織方式。(我的數(shù)據(jù)來(lái)源是通過(guò)hibernate查詢(xún)得來(lái)得,對(duì)此讀者可自行處理)
try
{
PrintWriter out = response.getWriter();
JSONObject obj = new JSONObject();
JSONArray js = new JSONArray();
//這里的數(shù)據(jù)拼裝一般是從數(shù)據(jù)庫(kù)查詢(xún)來(lái)的
Iterator it = mes.iterator();
while(it.hasNext()){
Chat chat =(Chat)it.next();//數(shù)據(jù)庫(kù)查詢(xún)得到的結(jié)果
JSONObject objtemp = new JSONObject();
objtemp.put("chatdate",chat.getDate().substring(0,10) );
objtemp.put("message", chat.getContent());
js.add(objtemp);
}
obj.put("js",js);
out.print(obj.toString());
//out.print(rnd);
}catch(Exception e)
{
e.printStackTrace();
}
return null;