ajax从服务端获取数据(服务端返回html、xml)

ajax的本质就是,发送http请求的工作交给js中的XMLHttpRequest对象去做!

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ajax知识</title>
<link rel="stylesheet" type="text/css" href="../css/body.css" />
<link rel="stylesheet" type="text/css" href="../css/mark.css" />
<link rel="stylesheet" type="text/css" href="../css/input2.css" />
<link rel="stylesheet" type="text/css" href="../css/console.css" />
</head>
<body>
<h1>ajax知识</h1>
<h3>ajax的本质就是,发送http请求的工作交给js中的XMLHttpRequest对象去做</h3>
<input type="button" id="input1" value="ajax获取服务端新闻,返回html"/>
<br /><br />
<input type="button" id="input2" value="测试当一个元素绑定2个点击事件时,会执行哪个?" onclick="test1();"/>
<br /><br />
<input type="button" id="input3" value="ajax获取服务端数据,返回xml"/> 
<br /><br />
<input type="button" id="input4" value="ajax获取服务端数据,返回xml格式"/> 
<br /><br />
<ul></ul>
<ul></ul>
<ul></ul>
</body>
<script type="text/javascript">
document.getElementById('input2').onclick = function() {
	//当一个元素绑定2个点击事件时,会执行这个
	alert('hi'); 
}

//
function test1(){
	//当一个元素绑定2个点击事件时,这个不会执行
	alert('hello');
}

//
document.getElementById('input1').onclick = function() {
	var xhr = new XMLHttpRequest();
	xhr.onreadystatechange = function() {
		if(this.readyState == 4 && this.status == 200){
			console.log('服务端返回的内容:' + this.responseText);
			document.getElementsByTagName('ul')[0].innerHTML = this.responseText;
			}
		}
	var url = '/ajax/ajaxNewsList';
	xhr.open('get', url, true);
	xhr.send(null);
}

//
document.getElementById('input3').onclick = function() {
	var xhr = new XMLHttpRequest();
	xhr.onreadystatechange = function() {
		if(this.readyState == 4 && this.status == 200){
			console.log('服务端返回的内容:' + this.responseText);
			console.log('服务端返回的内容:' + this.responseXML);
// 			alert(this.responseXML);
			var obj = this.responseXML;
			var rootNode = obj.getElementsByTagName('books')[0];
// 			var rootNode = obj.childNodes[0];
			console.log(rootNode);
			var allBook = rootNode.getElementsByTagName('book');
			console.log(allBook, allBook.length);
			var str = '';
			for (var index = 0; index < allBook.length; index++) {
					var bookNode = allBook[index];
					console.log(bookNode, bookNode.innerHTML);
					console.log(bookNode.getElementsByTagName('name')[0].innerHTML);
					console.log(bookNode.getElementsByTagName('author')[0].innerHTML);
					var bookName = bookNode.getElementsByTagName('name')[0].childNodes[0].nodeValue;
					var bookAuthor = bookNode.getElementsByTagName('author')[0].childNodes[0].nodeValue;
					console.log(bookName, bookAuthor);
					str += '<li>' + bookName +  '-' + bookAuthor +'</li>'
				}
			document.getElementsByTagName('ul')[1].innerHTML = str;
			}
		}
	var url = '/ajax/ajaxXml';
	xhr.open('get', url, true);
	xhr.send(null);
}

//
document.getElementById('input4').onclick = function() {
	var xhr = new XMLHttpRequest();
	xhr.onreadystatechange = function() {
		if(this.readyState == 4 && this.status == 200){
			console.log('服务端返回的内容:' + this.responseText);
			console.log('服务端返回的内容:' + this.responseXML);
// 			alert(this.responseXML);
			var obj = this.responseXML;
			var rootNode = obj.getElementsByTagName('books')[0];
// 			var rootNode = obj.childNodes[0];
			console.log(rootNode);
			var allBook = rootNode.getElementsByTagName('book');
			console.log(allBook, allBook.length);
			var str = '';
			for (var index = 0; index < allBook.length; index++) {
					var bookNode = allBook[index];
					console.log(bookNode, bookNode.innerHTML);
					console.log(bookNode.getElementsByTagName('name')[0].innerHTML);
					console.log(bookNode.getElementsByTagName('author')[0].innerHTML);
					var bookName = bookNode.getElementsByTagName('name')[0].childNodes[0].nodeValue;
					var bookAuthor = bookNode.getElementsByTagName('author')[0].childNodes[0].nodeValue;
					console.log(bookName, bookAuthor);
					str += '<li>' + bookName +  '-' + bookAuthor +'</li>'
				}
			document.getElementsByTagName('ul')[2].innerHTML = str;
			}
		}
	var url = '/ajax/books.xml';
	xhr.open('get', url, true);
	xhr.send(null);
}
</script>
</html>
package com.jiongmeng.entity;

import java.util.ArrayList;
import java.util.List;

public class News {
	
	private String id;
	private String title;
	
	public News() {
		super();
	}

	public News(String id, String title) {
		super();
		this.id = id;
		this.title = title;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public List<News> showNews() {
		List<News> news = new ArrayList<News>();
		news.add(new News("1", "杨幂和魏大勋传出绯闻"));
		news.add(new News("2", "林志玲结婚啦"));
		news.add(new News("3", "朝鲜半岛局势剑拔弩张"));
		news.add(new News("4", "黄晓明确认参加《中餐厅》录制"));
		news.add(new News("5", "鹿晗和关晓彤深夜撒狗粮"));
		news.add(new News("6", "林志玲开直播,网友直呼认不出来了!"));
		return news;
	}
	
	

}
package com.jiongmeng.ajax;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jiongmeng.entity.News;

/**
 * 获取新闻列表
 */
@WebServlet("/ajaxNewsList")
public class AjaxNewsList extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter pw = response.getWriter();
		News news = new News();
		StringBuffer sb = new StringBuffer();
		List<News> newsList = news.showNews();
		for (News newInfo : newsList) {
			String id = newInfo.getId();
			String title = newInfo.getTitle();
			//直接在服务端拼接成html,直接返回html给客户端,让客户端自己去处理这段html
			sb.append("<li><a href=\"news.jsp?id=" + id + "\">" + title + "</a></li>");
		}
		try {
			// 模拟网络慢的情况
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println(sb.toString());
		pw.print(sb.toString());
		pw.flush();
		pw.close();
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

	@Override
	public void init(ServletConfig config) throws ServletException {

	}

}
package com.jiongmeng.ajax;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 获取xml数据
 */
@WebServlet("/ajaxXml")
public class AjaxXml extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/xml;charset=UTF-8");
		PrintWriter pw = response.getWriter();
		StringBuffer sb = new StringBuffer();
		sb.append("<books>");
		sb.append("<book><name>笑傲江湖</name><author>金庸</author></book>");
		sb.append("<book><name>小李飞刀</name><author>古龙</author></book>");
		sb.append("<book><name>水浒传</name><author>施耐庵</author></book>");
		sb.append("<book><name>西游记</name><author>吴承恩</author></book>");
		sb.append("<book><name>三国演义</name><author>罗贯中</author></book>");
		sb.append("<book><name>红楼梦</name><author>曹雪芹</author></book>");
		sb.append("</books>");
		try {
			// 模拟网络慢的情况
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println(sb.toString());
		pw.print(sb.toString());
		pw.flush();
		pw.close();
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

	@Override
	public void init(ServletConfig config) throws ServletException {

	}

}

books.xml

<?xml version="1.0" encoding="UTF-8"?>
<books>
<book><name>鹿鼎记</name><author>金庸</author></book>
<book><name>萍踪侠影</name><author>梁羽生</author></book>
<book><name>笑傲江湖</name><author>金庸</author></book>
<book><name>小李飞刀</name><author>古龙</author></book>
<book><name>四大名捕</name><author>温瑞安</author></book>
</books>

 

完!

猜你喜欢

转载自blog.csdn.net/czh500/article/details/108107263