javaweb(ajax+json实现自动补全&&ajax实现分页)

1使用jQuery的ajax判断用户名是否存在 ($.ajax/$.post)

无刷新:不刷新整个页面,只刷新局部
无刷新的好处: 只更新部分页面,有效利用带宽,提高用户体验

 $.ajax()常用参数与说明

一、$.ajax()

url:请求地址
data:请求参数 "name="+sname+"&pwd="+spwd {name:sname,pwd:spwd}
type:post/get 请求方式
dataType:预计服务器可能返回的数据类型 text/json 
success:成功的回调函数
error:失败的回调函数

二、$.post/get()

$.post(url,data,function(){});

对象:

{
  键:值,
  键:值

  "uname":"大炮1",
   "uage":18
}

字符串数组:["aa","bb","cc"]

对象数组:[{},{},{}]

工具:集合--->json格式的String

fastjson

JSON.toJSONString();


json格式的字符串解析成一个对象/对象数组
1.js的方式 eval()
2.jQuery的方式 $.parseJSON()
 

ajax+json实现自动补全以及分页代码例子:

index.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>
<!-- 引入jQuery的类库 -->
<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<!-- 另起一个script块 -->
<script type="text/javascript">
   $(function(){
	   //默认显示第一页
	   myf('a');
   })
  //专门控制分页
  var pageIndex;
   var max;
  function myf(type){
	  //拿到文本框的值
	  var gname=$("#gname").val();
	   if(type=='a'){
		   //首页
		   pageIndex=1;
	   }else if(type=='b'){
		   //上一页
		   if(pageIndex>1){
			   pageIndex--;
		   }
		   else{
			   alert("已经是第一页了");
		   }
	   }
	   else if(type=='c'){
		   //下一页
		   if(pageIndex<max){
			   pageIndex++;
		   }
		   else{
			   alert("已经是末页了");
		   }
		  
	   }
	   else{
		   //末页
		   pageIndex=max;
	   }
	   
	   $.post("page.do",{pid:pageIndex,gname:gname},function(data){
		 //根据属性拿到属性值  根据键拿到值
		   // alert($.type(data.pageMax));max  //数据类型 string
		 // alert(data.goodsList); 集合
		   //将json格式的字符串解析成js的对象/对象数组
		  // var ss=$.parseJSON(data);
		   //alert($.type(ss));//array
		   //alert($.type(data));
		   max=data.pageMax;
		   var sb=" <table border=\"1px\" width=\"50%\">";
		   sb+="<tr align=\"center\">";
		   sb+="<td>商品序号</td>";
		   sb+="<td>商品名称</td>";
		   sb+="<td>商品图片</td>";
		   sb+="</tr>";
		   $.each(data.goodsList,function(i,g){//下标,元素
			   sb+="<tr>";
			   sb+="<td>"+g.gid+"</td>";
			   sb+="<td>"+g.gname+"</td>";
			   sb+="<td><img src='"+g.gpath+"'/></td>";
			   sb+="</tr>";
			   
		   })
		   sb+="</table>";
		   //给div赋值
		   $("#aa").html(sb); 
		   //赋值当前页码&最大页码
		   $("#xx").html(pageIndex);
		   $("#yy").html(max);
	   },"json");
   }
   
</script>
</head>
<body>
    <center>
     <img src="images/1.jpg"/>
        <div>
          商品名:<input type="text" id="gname"/>
         <input type="button" value="查询" onclick="myf('a')">  
        </div>
        <div id="aa"></div>
        <div>
          <a href="javascript:myf('a')">首页</a>
          <a href="javascript:myf('b')">上一页</a>
          <a href="javascript:myf('c')">下一页</a>
          <a href="javascript:myf('d')">末页</a>
                   【<span id="xx"></span>/<span id="yy"></span>】
        </div>
       
    </center>
</body>
</html>
package com.zking.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;
import com.zking.biz.GoodsBiz;
import com.zking.biz.IGoodsBiz;
import com.zking.entity.goods;

@WebServlet("/page.do")
public class PageServlet extends HttpServlet{

	private List<goods> ls;
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	doPost(req, resp);
	}
	
	
	
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		//设置编码方式
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=UTF-8");
		
		//获取out
		PrintWriter out=resp.getWriter();
		
		int pageIndex=1;
		int pageSize=5;
		//servlet调用biz层
		IGoodsBiz igb=new GoodsBiz();
		//接收模糊查询关键字
		String gname=req.getParameter("gname");
		if(gname==null) {
			gname="";//相当于查询所有
		}
		//获取最大页码
	int max=igb.getMax("goods where gname like '%"+gname+"%'", pageSize);
	
		//接收pid
		String pid=req.getParameter("pid");
		if(pid!=null) {
			pageIndex=Integer.parseInt(pid);//改变页码
		}
	List<goods> ls=igb.getAllByPage(pageIndex, pageSize,gname);
		
	//定义一个map集合
	Map<String, Object> mym=new HashMap<String,Object>();
	//存元素
	mym.put("goodsList", ls);
	mym.put("pageMax", max);
	
	//利用工具将map集合--》json格式的对象字符串
		String str=JSON.toJSONString(mym);
		
	
	//把响应输送到客户端=页面
	out.write(str+"*"+max);
	out.flush();
	out.close();	
	}
	
	
	
	
	
	
	
	
	
	
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值