首页 > 代码库 > ajax实现无刷新获取数据javascript+jsp+serverlet

ajax实现无刷新获取数据javascript+jsp+serverlet

jsp页面通过ajax获取后台serverlet传来的数据

serverlet页面代码

package com.shxt.lesson16homework.Servlets;import java.io.IOException;import java.io.PrintWriter;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class SelStudent extends HttpServlet {        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        request.setCharacterEncoding("utf-8");        try {            Class.forName("com.mysql.jdbc.Driver");            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3308/lingyun1", "root", "mysql");            Statement stmt = conn.createStatement();            ArrayList<Map<String, String>> aList = new ArrayList<Map<String, String>>();            ResultSet rs = stmt.executeQuery("select * from student");            ResultSetMetaData rsmd = rs.getMetaData();            String xx="[";
//xx用于将结果集转化为json数据格式必须为[{"":"","":""},{"":"","":""},{"":"","":""}]
while (rs.next()) { // Map<String, String> hmap = new HashMap<String, String>(); xx+="{"; for (int i = 1; i <= rsmd.getColumnCount(); i++) { String key = rsmd.getColumnName(i); xx+="\""+rsmd.getColumnName(i)+"\""+":"+"\""+rs.getString(key)+"\""+","; //String value = http://www.mamicode.com/rs.getString(key);>//hmap.put(key, value); } xx=xx.substring(0,xx.length()-1)+"},"; //aList.add(hmap); } xx=xx.substring(0,xx.length()-1); xx+="]"; response.setContentType("text/html; charset=utf-8"); //String xx =aList.toString(); PrintWriter out = response.getWriter();
//xx = xx.substring(1, xx.length()-1); System.out.println(xx);
//将得到的数据输出 out.print(xx); out.flush(); out.close(); }
catch (Exception e) { e.printStackTrace(); } }}


jsp页面代码

 

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title><script type="text/javascript">    function loadStudent() {        var req = new XMLHttpRequest();        req.onreadystatechange = function() {            if (req.readyState == 4) {                var data = req.responseText;                //alert(data);                var myObj = eval(‘(‘+data+‘)‘);
//其中data必须为json格式的数据格式如[{"":"","":""},{"":"","":""},{"":"","":""}]
//不然eval函数会报错 alert(myObj.length);
for ( var i = 0; i < myObj.length; i++) { var selObj = document.getElementById("bodyId"); var newTr = document.createElement("TR"); var newTd1 = document.createElement("TD"); newTd1.innerHTML = "<input type=‘radio‘ id=‘sf"+myObj[i].code+"‘ name=‘sfxz‘ value=http://www.mamicode.com/‘" +myObj[i].code + "‘ />"; var newTd2 = document.createElement("TD"); newTd2.innerHTML = "<span align=‘center‘ id=‘dhh"+myObj[i].code+"‘>" + myObj[i].tele+ "<span>"; var newTd3 = document.createElement("TD"); newTd3.innerHTML = "<span align=‘center‘ id=‘jg"+myObj[i].code+"‘>"+ myObj[i].region + "<span>"; var newTd4 = document.createElement("TD"); newTd4.innerHTML = "<span align=‘center‘ id=‘xm"+myObj[i].code+"‘>" + myObj[i].name+ "<span>"; var newTd5 = document.createElement("TD"); newTd5.innerHTML = "<span align=‘center‘ id=‘xh"+myObj[i].code+"‘>" + myObj[i].code+ "<span>"; newTr.appendChild(newTd1); newTr.appendChild(newTd5); newTr.appendChild(newTd4); newTr.appendChild(newTd3); newTr.appendChild(newTd2); selObj.appendChild(newTr); } } }; req.open("post", "selStu", true); req.send(null); } function updatestu() { var stuid=""; var rdsObj = document.getElementsByName("sfxz"); //一组对象 for (var i = 0; i < rdsObj.length; i++) { if (rdsObj[i].checked == true) { //alert(rdsObj[i].value + " 被选中"); stuid=rdsObj[i].value } } var resultObj = window.showModalDialog("stuupdate.jsp", stuid);
//产生模式对话框 document.getElementById(
"xh"+stuid).innerHTML = resultObj.code; document.getElementById("xm"+stuid).innerHTML = resultObj.name; document.getElementById("jg"+stuid).innerHTML = resultObj.region; document.getElementById("dhh"+stuid).innerHTML = resultObj.tele; } function deletestu() { var stuid=""; var rdsObj = document.getElementsByName("sfxz"); //一组对象 for (var i = 0; i < rdsObj.length; i++) { if (rdsObj[i].checked == true) { //alert(rdsObj[i].value + " 被选中"); stuid=rdsObj[i].value } } document.getElementById("xh"+stuid).innerHTML =""; document.getElementById("xm"+stuid).innerHTML = ""; document.getElementById("jg"+stuid).innerHTML = ""; document.getElementById("dhh"+stuid).innerHTML = ""; //document.getElementById("sf"+stuid) }</script></head><body onl oad="loadStudent()"> <table> <thead> <tr> <td align="center" width="100px" height="100px">选择</td> <td align="center" width="100px" height="100px">学号</td> <td align="center" width="100px" height="100px">姓名</td> <td align="center" width="100px" height="100px">籍贯</td> <td align="center" width="200px" height="100px">电话</td> </tr> </thead> <tbody id="bodyId"> </tbody> <tfoot> <input type="button" value="http://www.mamicode.com/修改数据" onclick="updatestu()"/> <input type="button" value="http://www.mamicode.com/删除" onclick="deletestu()" /> </tfoot> </table></body></html>

模式对话框中的jsp页面代码

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title><script type="text/javascript">//【重点】:onload事件自动执行一个javascript代码,以获取到模态参数function loadParam() {    //对话参数    var loadParamObj = window.dialogArguments; //parameter / properties / attribute            var req = new XMLHttpRequest();        req.onreadystatechange = function() {            if (req.readyState == 4) {                var data = req.responseText;                //alert(data);                var myObj = eval(‘(‘+data+‘)‘);                                document.getElementById("xm").value =  http://www.mamicode.com/myObj[0].name;                document.getElementById("xh").value =   http://www.mamicode.com/myObj[0].code;                document.getElementById("jg").value =   http://www.mamicode.com/myObj[0].region;                document.getElementById("dhh").value =  http://www.mamicode.com/myObj[0].tele;                                                           }        };        req.open("post", "selStu?stuid="+loadParamObj, true);        req.send(null);        //alert(loadParamObj);}function updateInfo() {    //如何将信息返回给模态窗体的调用者    var reObj = new Object();    reObj.code = document.getElementById("xh").value;    reObj.name = document.getElementById("xm").value;    reObj.region =document.getElementById("jg").value;    reObj.tele =document.getElementById("dhh").value;    window.returnValue = reObj;    //returnValues会将信息返回给模态窗体的调用者(打开模态的页面)    window.close();    //关闭当前的窗体}</script></head><body onl oad="loadParam()">学号:<input id="xh" readonly="readonly"/><br />姓名:<input id="xm" /><br />籍贯<input id="jg" /><br />电话号<input id="dhh" /><br /><input type="button" value="http://www.mamicode.com/修改" onclick="updateInfo()" /></body></html>