Javascript處理返回的JSON數據
在JSP頁面經常要從數據庫中讀取數據。有時候在頁面中也要一些特效處理。如運用Ajax技術。下面這個例子是在javascript中用ajax技術實現Json數據的無刷新加載。
一:導入Json要用到的jar包
commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、 commons-lang-2.5.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar、json- lib-2.4-jdk15.jar共6個jar包。
二:具體的代碼編寫
實體類:User
package entity;
public class User {
private String userId;
private String userName;
private int age;
public User() {
}
public User(String userId, String userName, int age) {
this.userId = userId;
this.userName = userName;
this.age = age;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
JSP頁面:jsonTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSON測試</title>
<script type="text/javascript">
function create(){
if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}else if(window.ActiveXObject){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
}
function run(){
var url = "JsonServlet?date="+new Date();
create();
xmlHttp.open("POST",url,true);
xmlHttp.onreadystatechange=callback;
xmlHttp.send();
}
function callback(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
var xmlDoc=xmlHttp.responseText;
var data=eval(xmlDoc);
var json = "";
for(var i=0;i<data.length;i++){
json +=data[i].userId+":"+data[i].userName+","+data[i].age+"<br>";
}
document.getElementById("content").innerHTML=json;
}
else{
alert("AJAX服務器返回錯誤!");
}
}
}
</script>
</head>
<body>
<input type="button" value="顯示數據" onclick="run()">
<div id="content"></div>
</body>
</html>
servlet:JsonServlet類
package servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import entity.User;
/**
* Servlet implementation class JsonServlet
*/
public class JsonServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public JsonServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
List<User> users = new ArrayList<User>();
users.add(new User("1", "李峰", 18));
users.add(new User("2", "王偉", 18));
users.add(new User("3", "張力", 20));
//轉成json對象
JSONArray jsonArray = JSONArray.fromObject(users);
response.getWriter().write(jsonArray.toString());
}
} 到此,javascript用ajax處理json數據的例子就完成了。ajax的代碼是采用比較原始的方法。可以用一些ajax框架改進,減少代碼量。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!