html ajax如何改成jsp,Ajax+jsp实现动态修改表单

ajax最大特点就是在页面不刷新的前提下实现页面内容的变换。

举个很常见的例子:比如有一个排行榜,这个排行榜肯定是随时变化的,我们希望用户不需要刷新页面的情况下就可以看到实时表格。(游戏排行榜,oj提交列表)

为了实现这个功能,我们需要掌握以下技术:ajax向后台提出请求(每隔很短的时间)------>jsp获取请求并查询数据库----->返回json格式数据----->js解析json格式数据并dom操作节点修改表单内容

流程:首先是编写触发函数(设置计时器或者点击事件),在触发函数中实现ajax的创建,然后实现ajax的回调函数,根据回调函数的内容进行相应的操作。

比如常见邮箱合理性验证可以在客户端实现,但是如果涉及到用户名是否使用过之类的,就必须要先启用ajax到服务端,在获取到返回的字符串后(比如该用户未被注册,或者该用户已被注册),通过dom操作打印到该页面(***.innerHTML=           )(***** .style.display="block")

如果想要动态修改表单,除了触发事件不一样(合理性验证一般当失去焦点的时候,而像排行榜之类的就是每隔多少秒获取),还要在后台返回json格式的数据,客户端通过eval解析(注意两边要加上()),

这边需要在lib文件夹下导入jsonarray和mysql的包,这里只有学生id和姓名两列。

login.jsp

%@ page language="java" import="java.util.*" contentType="text/html;charset=utf-8"%>

My JSP 'index.jsp' starting page

window.οnlοad=function(){

setInterval("change()",50);

}

function change(){

var i=Math.random();//目的是使页面不一样

createRequest('check.jsp?id='+i);

}

function createRequest(url){//初始化XMLHttpRequest对象

http_request=false;

if (window.XMLHttpRequest){

http_request=new XMLHttpRequest();

}else if (window.ActiveXObject){

try{

http_request=new ActiveXObject("Msxml2.XMLHTTP");

}catch(e){

try{

http_request=new ActiveXObject("Microsoft.XMLHTTP");

}catch(e){}

}

}

if (!http_request){

alert("不能创建XMLHTTPRequest对象");

return false;

}

http_request.onreadystatechange=getResult;//这边指定一旦接受到返回值就提交到getResult处理

http_request.open('GET',url,true);

http_request.send(null);

}

function getResult(){

if (http_request.readyState==4){

if (http_request.status==200){

var result=http_request.responseText;//获取到json数据

var json=eval("("+result+")");//解析json数据

setContent(json);//进行DOM操作

}

else

{

alert("您所请求的页面有错误");

}

}

}

function setContent(contents){//将json数据解析并输出到页面上

var size=contents.length;

var p=document.getElementById("content_table_body").parentNode;//先将之前的删除

p.removeChild(document.getElementById("content_table_body"));

var c=document.createElement("tbody");

c.setAttribute("id","content_table_body");

p.appendChild(c);

for (var i=0;i

var nextNode=contents[i].id;//代表的是json格式数据的第i个元素的id

var nextNode2=contents[i].student_name;//第i个元素的姓名

var tr=document.createElement("tr");

var td=document.createElement("td");

var text=document.createTextNode(nextNode);

var td2=document.createElement("td");

var text2=document.createTextNode(nextNode2);

td2.appendChild(text2);

tr.append(td2);

td.appendChild(text);

tr.appendChild(td);

document.getElementById("content_table_body").appendChild(tr);

}

}

check.jsp

String driver = "com.mysql.jdbc.Driver";

String url = "jdbc:mysql://127.0.0.1:3306/ajax";

String use = "root";

String password = "960404";

Class.forName(driver);

Connection conn= DriverManager.getConnection(url,use,password);

PreparedStatement sql =conn.prepareStatement("select * from ajax_check");

ResultSet rs=sql.executeQuery();

List>list=new ArrayList>();

while(rs.next()){

Map map=new HashMap();

map.put("id",rs.getString("student_id"));

map.put("student_name",rs.getString("student_name"));

list.add(map);

}

out.println(JSONArray.fromObject(list).toString());

System.out.println(list);

rs.close();

conn.close();

%>这样就可以边修改数据库内容,边观察到页面的变化了,当然你也可以再写个增删查改,然后看页面实时变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值