Ajax(一)
来源:互联网 发布:俄罗斯航空发动机知乎 编辑:程序博客网 时间:2024/06/05 11:29
Ajax在页面代码中通过js代码来实现。
Ajax的特点是异步传输,局部刷新。
Ajax构建有三个步骤:创建对象,发送请求,回调函数
1.创建对象需要判断浏览器类型,这里判断是否是IE浏览器,若不是,则创建通用浏览器。
2.创建好对象之后,我们调用创建好的对象,将页面中的元素name传送给相应的servlet进行处理。再创建回调函数。
xmlHttpRequest.open("get",url,true);这三个参数代表传值方式“get”,接收传值的url地址,是否是异步处理true。
3.因为是异步处理,所以等待servlet处理好之后,调用回调函数将结果传回来。
(xmlHttpRequest.readyState == 4&&xmlHttpRequest.status == 200 4和200表示的是servlet处理好了。可以传回来结果了。
下面是范例代码。
<script type="text/javascript"> //创建对象 var xmlHttpRequest; function createXML(){ if(window.ActiveXObject){ return new ActiveXObject("Microsoft.XMLHTTP"); }else if(window.XMLHttpRequest){ return new XMLHttpRequest(); } } //发送请求 function send2(){ xmlHttpRequest=createXML(); var name= document.getElementById("name").value; var url="CheckServlet?name="+name; xmlHttpRequest.onreadystatechange = haoLeJiaoWo; xmlHttpRequest.open("get",url,true); xmlHttpRequest.send(null); } //回调函数 function haoLeJiaoWo(){ if(xmlHttpRequest.readyState == 4&&xmlHttpRequest.status == 200 ){ var str=xmlHttpRequest.responseText; document.getElementById("div1").innerHTML=str; } } </script>
下面我们用Ajax技术,创建一个像百度搜索一样的自动联想下拉菜单。
项目结构:
其中只用到了search.jsp和SearchServlet.java
1.首先看一下jsp前台处理页面:search.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title><style type="text/css"><!--#Layer1 { position:absolute; left:10px; top:38px; width:166px; border: 1px solid #000000; z-index:1;}.outcss{background-color: white;padding: 1px 2px 1px 4px;}.overcss{background-color: gray;padding: 1px 2px 1px 4px;}--></style></head> <script type="text/javascript"> //创建对象 var xmlHttpRequest; function createXML(){ if(window.ActiveXObject){ return new ActiveXObject("Microsoft.XMLHTTP"); }else if(window.XMLHttpRequest){ return new XMLHttpRequest(); } } //发送请求 function send2(){ xmlHttpRequest=createXML(); var name= document.getElementById("name").value; var url="SearchServlet?name="+name; xmlHttpRequest.onreadystatechange = haoLeJiaoWo; xmlHttpRequest.open("post",url,true); xmlHttpRequest.send(null); } //回调函数 function haoLeJiaoWo(){ if(xmlHttpRequest.readyState == 4&&xmlHttpRequest.status == 200 ){ var str=xmlHttpRequest.responseText; var div1=document.getElementById("Layer1"); var arr=str.split("-"); var divStr=""; for(var i=0;i<arr.length;i++){ divStr+="<div class='outcss'>"+arr[i]+"</div>"; } div1.innerHTML=divStr; } } </script><body><div id="Layer1"></div><form id="form1" name="from" method="post" action="SearchServlet"> <label> <input type="text" id="name" name="name" onkeyup="send2()"/> <input type="submit" name="Submit" value="百度一下" /> </label></form></body></html>
2.我们看一下处理请求的SearchServlet.java:
我仅在SearchServlet.java中的doGet方法中写了代码,doPost方法中写doGet(request, response);
看一下doGet方法中的代码:
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");String str = request.getParameter("name");PrintWriter out = response.getWriter();Connection conn = null;Statement stmt = null;ResultSet rs = null;List strList = new ArrayList();try {if (str != null & str.length() > 0) {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");String url = "jdbc:sqlserver://127.0.0.1:1433;database=yun4";conn = DriverManager.getConnection(url, "sa", "123456");stmt = conn.createStatement();rs = stmt.executeQuery("select title from news where title like '"+ str + "%'");while (rs.next()) {strList.add(rs.getString("title"));}StringBuffer sbu = new StringBuffer();int size = strList.size();for (int i = 0; i < size; i++) {sbu.append((String) strList.get(i) + "-");}String s = sbu.toString();if (s != null && s != "") {s = s.substring(0, s.length() - 1);}out.print(s);out.flush();}} catch (Exception e) {e.printStackTrace();}}
这样,我们就完成了百度搜索自动联想div的效果。
0 0
- ajax(一) 初识ajax
- Ajax基础(一)
- ajax读书笔记(一)
- Ajax入门(一)
- AJAX系列(一)
- Ajax 入门(一)
- Ajax学习(一)
- Ajax讲解(一)
- Ajax小试牛刀(一)
- Ajax技术(一)
- Ajax讲解(一)
- ajax总结(一)
- Ajax 学习(一)
- AJAX应用(一)
- Ajax学习(一)
- 浅谈ajax(一)
- Ajax(一)
- 学习AJAX(一)
- 6、Activity生命周期
- mybatis补充教程之一:在控制台显示sql语句,类似hibernate show_sql.
- 《算法导论》学习笔记(2)——快速排序
- Spring MVC 3 深入总结
- svn/git 冲突
- Ajax(一)
- nyoj 605 Dice Tower
- alarm
- 认识C#之前
- HTML 有趣艺术代码
- 仿微信滑动翻页UI设计和实现
- mybatis补充教程之二:传递多个参数的方法(Multiple parameters)
- Eclipse无法导入项目
- poj2054 Color a Tree