js实验2.(4)AJAX的GET

  实验要求:

ajax-get技术(ajaxGet.htmlget.jsp)实现以下功能:

      (1)在下面画面中输入id


 (2) 离开id输入域后利用ajax-get技术调用get.jspstu表中取得numname并显示出来,即alert(xmlhttp.responseText),返回的格式见下图:


 (3) 关闭弹出框后:


提示:

数据库:teaching   表:stu  字段:id,num,name

离开输入域的事件为blur,可以采用属性onblur触发。

ajaxGet.html代码:

<!DOCTYPE html>
<html>
<head>
  <title>AJAX-get</title>
  <style>
     p {font-size:20px}
   </style>
</head>
<body>
  <h1>Ajax-get</h1>
  <p>id:<input id="t1" type="text" οnblur="r()"></p>
  <p id="t2">[无]</p>
  <script language="JavaScript" type="text/javascript">
   var xmlhttp;
   if(window.XMLHttpRequest){
	   xmlhttp=new XMLHttpRequest();//IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
   }else{
	   xmlhttp=new XMLHttpRequest("Microsoft.XMLHTTP");//IE6, IE5 浏览器执行代码
   }
   function r(){
	   var rr=a();
	   setTimeout(show,1);//1ms之后执行show()函数
   }
   function a(){
	   var t2=document.getElementById("t2");
	   t2.innerHTML="正在查询...";
   }
   function show(){
	   var t1=document.getElementById("t1");
	   var t2=document.getElementById("t2");
	   var msg="get.jsp?id="+t1.value;
	   xmlhttp.open("get",msg,false);// 打开http请求( open)的参数: get或post, url,是否异步发送
	   xmlhttp.send(null);//发送http请求。 get只能用null作为参数
	   alert(xmlhttp.responseText); // http响应的正文
	   t2.innerHTML=xmlhttp.responseText;
   }
   </script>
</body>
</html>

get.jsp代码如下:

<%@ page  
import="java.sql.*,java.awt.List"
contentType="text/html; charset=utf-8"
 %>
<%!
Connection conn;
List data=new List();//储存id的list
List data1=new List();//储存学号的list
List data2=new List();//储存姓名的list
//数据库的连接操作
boolean connect() {
	String connectString = "jdbc:mysql://localhost:3306/teaching17"
			+ "?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&&useSSL=false";
	try {
		Class.forName("com.mysql.jdbc.Driver");
		conn = DriverManager.getConnection(connectString, "root", "0103");
		return true;
	} catch (Exception e) {
		System.out.println(e.getMessage());
	}
	return false;
}

//执行sql语句
ResultSet executeQuery(String sqlSentence) {
    Statement stat;
    ResultSet rs = null;
       
    try {
	stat = conn.createStatement();       //获取执行sql语句的对象
	rs = stat.executeQuery(sqlSentence); //执行sql查询,返回结果集
    } catch (Exception e) {
	System.out.println(e.getMessage());
    }
    return rs;
}
int coun;
//储存查询记录的条数,将其放置进对应的list里
void showStudents(ResultSet rs){
    try {
       while(rs.next()){
    	   coun=coun+1;
          data.add(rs.getString("id").toString());
          data1.add(rs.getString("num").toString());
          data2.add(rs.getString("name").toString());
       }
    }
    catch (Exception e) {
	System.out.println(e.getMessage());
    }
}
%>
<%if(connect()){%>
	<%
	coun=0;
	String ss="select * from stu where id="+request.getParameter("id")+";";
	ResultSet rs = executeQuery(ss);
	showStudents(rs);
	%>
	<%if(coun==1){ %>
		<%="id:"+data.getItem(0)+"</br>"%>
		<%="num:"+data1.getItem(0)+"</br>"%>
		<%="name:"+data2.getItem(0)+"</br>"%>
	<%}
	else{%>
		<%="null"%>
	<%}
	data.clear();
	data1.clear();
	data2.clear();
	%>
<%} %>
不过目前发现了一个BUG:我在网页查询到id为5的信息之后,如果这时我更新了数据库,再次查询得到的并不是更新之后的数据库。还在进一步探究= = 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我了解你的问题。以下是基于AJAX的级联菜单实验的一些基本步骤: 1. 在HTML中创建两个或多个下拉菜单,如下所示: ```html <select id="menu1"> <option value="">请选择</option> <option value="1">选项1</option> <option value="2">选项2</option> </select> <select id="menu2"> <option value="">请选择</option> </select> ``` 2. 在JavaScript中使用AJAX技术,向服务器请求菜单数据。当用户选择第一个下拉菜单中的选项时,将会触发一个事件,如下所示: ```javascript document.getElementById("menu1").addEventListener("change", function() { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { document.getElementById("menu2").innerHTML = xhr.responseText; } }; xhr.open("GET", "getMenu2.php?menu1=" + this.value, true); xhr.send(); }); ``` 3. 在服务器端处理请求并返回数据。在这个例子中,当用户选择第一个下拉菜单中的选项时,将会向服务器发送一个请求,传递选项的值。服务器将会根据这个值来返回第二个下拉菜单中的选项列表。以下是一个简单的PHP示例: ```php $menu1 = $_GET["menu1"]; if ($menu1 == "1") { echo "<option value=''>请选择</option>"; echo "<option value='1'>选项1-1</option>"; echo "<option value='2'>选项1-2</option>"; } else if ($menu1 == "2") { echo "<option value=''>请选择</option>"; echo "<option value='1'>选项2-1</option>"; echo "<option value='2'>选项2-2</option>"; } ``` 以上就是基于AJAX的级联菜单实验的基本步骤。希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值