以前在做項目的時候碰到這樣的需求。使用者希望能夠直接輸入城市的名字,就能夠得到這個城市的相應的資訊。以前是在頁面開啟的時候產生幾個JavaScript數組,然後來對比的。這樣做的話,如果資料比較多的時候,使用者會明顯的感到響應延遲。
現在該成用ajax的方法來做,速度要快一些,客戶體驗會好一些。誰要咱們處在“體驗經濟”時代呢!
下面是做的一個小例子,由兩個頁面組成。
city.html頁代碼如下:
<script> 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]; } } } </script> <center> <h3>得到城市相應的資訊</h3> <table align="center"> <tr> <td>輸入城市的拼音:</td> <td><input type="text" id="citycode" name="citycode" onBlur="sndReq(this.value);"/></td> </tr> <tr> <td>層級:</td> <td><input type="text" id="tier" name="tier"/></td> </tr> <tr> <td>負責人:</td> <td><input type="text" id="rmm" name="rmm"/></td> </tr> </table> </center>
[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中了