AJAX根据城市名,自动完成相应的城市信息 以前在做项目的时候碰到这样的需求。用户希望能够直接输入城市的名字,就能够得到这个城市的相应的信息。以前是在页面打开的时候生成几个JavaScript数组,然后来对比的。这样做的话,如果数据比较多的时候,用户会明显的感到响应延迟。 现在该成用ajax的方法来做,速度要快一些,客户体验会好一些。谁要咱们处在“体验经济”时代呢! 下面是做的一个小例子,由两个页面组成。 city.html页代码如下: function createRequestObject() { var ro; var browser = navigator.appName; if(browser == "Microsoft Internet Explorer"){ ro = new ActiveXObject("Microsoft.XMLHTTP"); }else{ ro = new XMLHttpRequest(); } return ro; } var http = createRequestObject(); function sndReq(city) { http.open('get', 'zipcode.jsp?city='+city); http.onreadystatechange = handleResponse; http.send(null); } function handleResponse() { if(http.readyState == 4) { var response = http.responseText; var update = new Array(); if(response.indexOf('|' != -1)) { update = response.split('|'); document.getElementById("tier").value = update[0]; document.getElementById("rmm").value = update[1]; } } } 得到城市相应的信息 输入城市的拼音: 级别: 负责人: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] zipcode.jsp代码如下: 复制代码 代码如下:<%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.util.*" %> <%@ page import="java.sql.Connection"%> <%@ page import="java.sql.PreparedStatement"%> <%@ page import="java.sql.ResultSet"%> <%@ page import="com.util.MyConnection"%> <% String city = request.getParameter("city"); if(city==null) { city= ""; } if(!city.equals("")) { String sql="select citrmm,cittier from tb_basecity where citname like '"+city+"'"; Connection conn = MyConnection.getConnection(); PreparedStatement state= conn.prepareStatement(sql); ResultSet rs = state.executeQuery(); if(rs.next()) { out.println(rs.getString("citrmm")+"|"+rs.getString("cittier")); } else { out.println("未知"+"|"+"未知"); } rs.close(); state.close(); conn.close(); } else { out.println("未知"+"|"+"未知"); } %> PS: Http.send()后,经检测Http.readystate==4,说明载入完毕,这时网页内容已经载入 到了Http.responseBody中了