陷阱1 需要注意的是如果一般简单实用 传回类型是
text 那么不要写
response.setContentType("text/xml;charset=UTF-8");
传回XML时候才需要加
其他时候用的 response.setContentType("text/html;charset=UTF-8");
原始AJAX用法
var xmlhttp; //全局变量
//创建XMLHttpRequest对象
function GetXmlHttp() {
if (window.XMLHttpRequest) {
//针对FireFox ,IE7,IE8
xmlhttp = new XMLHttpRequest();
//针对一些小型浏览器的bug
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType("text/xml");
}
//针对IE6,IE5,和其他浏览器
} else if (window.ActivXObject) {
var activexName = [ "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];
for ( var i = 0; i < activexName.length; i++) {
try {
xmlhttp = new ActiveXObject(activeName[i]);
break;
} catch (e) {
alert("您的浏览器不支持AJAX技术");
}
}
}
return xmlhttp;
}
//主调函数,以当前页作为参数
function AjaxTest(currpage) {
GetXmlHttp(); //获取XMLHttpRequest对象
xmlhttp.onreadystatechange=callback; //设置异步的回调函数 【不要加括号】PS:千万不要拼错onreadystatechange
xmlhttp.open("get", "AjaxServer.do?currpage=" + currpage, true);//发送请求
xmlhttp.send(null);
}
//回调函数
function callback() {
//判断对象的状态是否已经交互完成
if (xmlhttp.readyState != 4) {
div.innerHTML = "<font color='red'>数据加载中...</font>";
} else {
//判断http是否交互成功
if (xmlhttp.status == 200) {
var xmlDOM = xmlhttp.responseXML;
parse(xmlDOM);
}
}
}
jquery中用法
$.post("Third.do",{queryString :+ id }, function(data) {
if (data.length > 0) {
var jobs = jQuery.parseJSON(data);
$('#Select1').fadeIn(); //初始化 清除原来数据
//在回调函数之内给页面赋值
inser(jobs.third,sel);
}
});
json JAVA端写法
/**
* @author chen_s
* @param info
* @category 基础jquery 传送 json数据Demo
*
**/
public class JsonServer extends HttpServlet {
//数据库全局变量 方便关闭
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String s = request.getParameter("info");
//有json参数传递过来
if(s!=null&&!s.equals(null)){
JSONObject job = JSONObject.fromObject(s);
JSONArray job2 = (JSONArray) job.get("jobs");
System.out.println(job2.size());
for(int i=0;i<job2.size();i++){
JSONObject o = (JSONObject) job2.get(i);
System.out.println(o.get("sname"));
}
}
//字符集编码
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control","no-cache");
//需要JSON.jar包
JSONObject json = new JSONObject();
try{
JSONArray members = new JSONArray();
//数据库查询数据
PageService ps = new PageService();
//当前页
int currpage = Integer.parseInt(
request.getParameter("currpage") == null ? "1" : request.getParameter("currpage"));
//总的记录数
int total = ps.getResultCount("person");
//分页单位
int pagesize = 6;
//Page类对象
PageBean page = new PageBean(total,currpage,pagesize);
String sql = "select * from person order by sid limit ?,?";
rs = ps.getResultSet(page);
//结果集拼接成JSON数据
while(rs.next()){
JSONObject member = new JSONObject();
member.put("sid",rs.getInt("sid"));
member.put("sname", rs.getString("sname"));
member.put("sage", rs.getString("sage"));
members.add(member);
}
//手动插入测试数据
// for(int i=0;i<3;i++){
// JSONObject member = new JSONObject();
// member.put("sid",i);
// member.put("sname", "chen"+i);
// member.put("sage", "23");
// members.add(i, member);
// }
json.put("jobs", members);
}catch(Exception e){
e.printStackTrace();
} finally{
BaseService bs = new BaseService();
bs.close(rs);
bs.close(pstmt);
bs.close(conn);
}
System.out.println(json.toString());
// //手动拼接 json无需jar包
// String jsonStr ="{\"jobs\":[{\"sid\":0,\"sname\":\"23\",\"sage\":\"chen0\"}" +
// ",{\"sid\":1,\"sname\":\"23\",\"sage\":\"chen1\"},{\"sid\":2,\"sname\":" +
// "\"23\",\"sage\":\"chen2\"},{\"sid\":3,\"sname\":\"23\",\"sage\":\"chen3\"}]}";
response.getWriter().write(json.toString());
}
}