html使用ajax+jsp更新网页部分信息

建网站的时候,想要实现点击一个按钮,根据radio的选择查询某一特定信息,并把其返回到input输入框里,这里的按钮是在form表单里的。
遇到了三个问题:
1. 每次点击按钮网页都会刷新,把已经填好的还未提交的信息清空了;
2. 之前查资料,看到好多都用php,我电脑没装php,然后装了之后没成功,弄的环境整个崩溃了,所以恢复到之前的环境后放弃php这个方法;
3. 实现ajax信息提取后,respondText获取的信息是一个html网页文本,但我只需要网页的body里的信息。

=======我接下来说的就是我自己能实现的,能在服务器端实现,但我也不清楚这能不能在客户端实现,因为我看资料的时候有些说服务器运行脚本是.php和.asp======

问题一:怎么让按钮就是单纯的按钮,不刷新网页呢?
很简单,代码如下,直接在button属性里加type=“button”,如果不加,表单里的按钮会默认为type=“submit”

<button                                                 class=" " id="getlocation" onclick="nochecklocation()" type="button">按钮</button>

问题二:实现网页部分刷新

两个文件,一个是save.html,一个是getinfo.jsp
三个部分,html:1. 输入显示部分; 2. javascript函数部分。 .jsp: 3. 数据处理部分。
1.输入显示部分:

<form ...>
<div class="*">
<label for="factoryindex">使用单位ID:</label> <input type="text"                                        id="factoryindex" placeholder=""> <label                                            class="**" for="media">安全阀体积:</label> <label                                                    class="*"> <input type="radio"                                                  name="valvolume" id="small" value="small">Small                                             </label> <label class="*"> <input type="radio"                                                  name="valvolume" id ="large" value="large">Large
</label>
</div>
<label for="storagelocationnum">存储位置:</label> <input                                                type="text" id="storagelocationnum" placeholder=""><button                                                    class="***" id="getlocation" onclick="nochecklocation()" type="button">获取推荐存储位置</button>
</form>

2.javascript函数部分

<script type="text/javascript">

function nochecklocation(){
    var xmlhttp;
    var volume;
    var vol=document.getElementsByName("valvolume");
    if(!(vol[0].checked||vol[1].checked)){
        alert("请选择体积!");
        return 0;
    }
    else if(vol[0].checked){
        volume=vol[0].value;
    }
    else if(vol[1].checked){
        volume=vol[1].value;
    }
    if(window.XMLHttpRequest)
        xmlhttp=new XMLHttpRequest();
    else
        xmlhttp=new ActiveXObjice("Microsoft.XMLHTTP");
    xmlhttp.onreadystatechange=function(){
        if(xmlhttp.readyState==4&&xmlhttp.status==200){     document.getElementById("storagelocationnum").value=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","jsp/getlocation.jsp?volume="+encodeURIComponent(volume),true);
    xmlhttp.send(null);
    }
</script>

3.数据处理部分
上面两个都在同一个html文件里,这个部分在文件夹jsp里的文件getlocation.jsp里,因为我jsp连接数据库用的是javaBean,所以,如果你不是这样,请用你自己的方式连接,直到jsp能正常运行调用数据。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page
    import="java.io.*,java.sql.*,java.sql.Connection,java.sql.Statement,java.util.Formatter"%>
<!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></title>
</head>
<body>
<jsp:useBean id="connect" class="com.xfzhang.bean.connection" />
<% 
String volum=request.getParameter("volume");
//out.println(volum);
try {
ResultSet rs=null;
String lo=new String();
if(volum.equals("small")){
    lo="select * from ***";
}else if(volum.equals("large")){
    lo="select * from ****";
}
rs=connect.query(lo);
while (rs.next()) {
        String sln=rs.getString("storagelocationnum");
        PrintWriter pw=response.getWriter();
        response.setContentType("html/text");
        pw.write(sln);
        pw.close();
}
    }catch (Exception e) {
    out.print("get data error!");
        //e.printStackTrace();
  }

%>
    <%-- jsp:include page="connection.jsp" flush="true"></jsp:include>--%>

    <%-- <jsp:forward page="test.jsp"></jsp:forward>--%>
</body>
</body>
</html>

之前说过,按照很多教程出来的都是网页,最主要的就是没有用

String sln=rs.getString("storagelocationnum");
PrintWriter pw=response.getWriter();
response.setContentType("html/text");
pw.write(sln);
pw.close();

这一段,我最开始用的就是jsp输出out.println()语句。
然后记住一定要有pw.close()哦!要不然得到的就是数据+空网页格式,可以试试看,还有就是因为我是要把数据填入input里,所以很多地方在2里的javascript里返回数据后,用的是
document.getElementById(“storagelocationnum”).innerHTML=xmlhttp.responseText;
然后当然就显示不出来啊,要用document.getElementById(“storagelocationnum”).value给input赋值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值