Ajax局部刷新jsp页面

Ajax局部刷新jsp页面

一、需求

用户在使用复选框时,复选框的选项可能随用户的操作而发生变化,这时需要刷新该复选框选项,同时做到不刷新整个页面,也就是只刷新jsp页面的一部分,使用ajax异步请求可以实现。
在这里插入图片描述

二、实现

2.1 复选框表单

<form action="servlet/mergeRdfServlet" method="post">
  <div id="refreshCheckbox"></div> <!--待填充复选框-->
  <div>
    <button type="button">Cancel</button>
    <button type="button" id="btnRefresh">Refresh</button><!--刷新按钮-->
    <button type="submit">Merge</button> <!--提交按钮-->
  </div>
</form>

2.2 ajax请求

$(document).on("click","#btnRefresh",function(){
  $.ajax({
    url:"servlet/refreshServlet", //请求servlet路径
    type:"POST", //POST请求
    async:true, //异步请求
    success:function(data){ //请求成功,data为sevlet返回的数据
      $("#refreshCheckbox label,br").remove(); //清除原本复选框
      var json = eval("("+data+")"); //将servlet返回的json数组转换为js对象
      
      //动态填充复选框
      if(json.length > 0){
        for(var i=0; i<json.length; i++){
          var label = document.createElement("label");
                         var input = document.createElement("input");
                         input.type="checkbox";
                         input.name="filesName";
                         input.value=json[i]; //复选框赋值
                         label.appendChild(input); //使用appendChild添加子标签
                         var span = document.createElement("span");
                         span.innerText=json[i];
                         label.appendChild(span);
                         var br = document.createElement("br");
                         document.getElementById("refreshCheckbox").appendChild(label);
                         document.getElementById("refreshCheckbox").appendChild(br);
        }
      }
    },
    error:function(){ //请求失败
      alert("Something Wrong")
    }
  })
})

2.3 servlet

@WebServlet("/refreshServlet")
public class RefreshServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        //获取RDF文件名
        String path = "src/main/webapp/publish/RDF";
        File f = new File(path);
        File[] files = f.listFiles();
        ArrayList<String> arrayList = new ArrayList<>();
        if(files != null){
            for (File file : files) {
                String filename = file.toString().substring(file.toString().lastIndexOf("/") + 1);
                if (filename.endsWith(".ttl")) {
                    arrayList.add(filename);
                }
            }
        }
        //ArrayList转为JSON数组,并将数据返回给ajax
        String[] filesName = arrayList.toArray(new String[0]);
        JSONArray jsonArray = (JSONArray) JSONArray.toJSON(filesName);
        PrintWriter out;
        resp.setCharacterEncoding("utf-8");
        out = resp.getWriter();
        out.write(jsonArray.toString());
        out.flush();
        out.close();
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
        this.doGet(req,resp);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值