ajax 异步显示分页

1.jsp页面部分重点内容

这里写代码片代码如下:
<script type="text/javascript">
function delCustomer(id){
    location.href="${pageContext.request.contextPath}/delCustomer?id="+id;
}
//当前页码
var pageNum=1;
//总页数
var totalPage=0;
//总条数
var totalCount=0;   
//每页条数
var currentCount=5;
<%--查询订单--%>
var cid;
function findOrder(customerId){
    cid=customerId;


    $.post("${pageContext.request.contextPath}/order/findOrder",{"customerId":customerId,"pageNum":pageNum,"currentCount":currentCount},function(data){
        var html="";
    //这个万能检测json数据方法
        alert(JSON.stringify(data));
         $.each(data.currentContent,function(i,n){
            html+="<tr><td>"+n.orderNum+"</td><td>"+n.receiverInfo+"</td><td>"+n.price+"</td><td>"+n.customer.cusName+"</td><td>"+"<a href=\"javascript:void(0)\"  onclick =\"delOrder('"+n.orderNum+"')\">删除</a>"+"</td></tr>";
    });
        $("#msg").html(html)  
        //分页信息处理
        pageNum=data.pageNum;
        totalPage=data.totalPage;
        totalCount=data.totalCount;
        currentCount=data.currentCount;
        //alert(JSON.stringify(currentCount));
        var pageHtml="<ul class=\"pagination\">";
        //1.判断是否可以向上翻页
        if(pageNum==1){
            pageHtml+="<li class=\"disabled\"><a href=\"#\">&laquo;</a></li>";
        }else{
            pageHtml+="<li><a href=\"#\" onclick=\"prePage()\">&laquo;</a></li>";
        }
        //2.判断中间页码
        for(var i=1;i<=totalPage;i++){
            if(i==pageNum){
                pageHtml+="<li class=\"active\"><a href=\"#\" onclick=\"selectPage("+i+")\">"+i+"</a></li>";
            }else{
                pageHtml+="<li><a href=\"#\" onclick=\"selectPage("+i+")\">"+i+"</a></li>";
            }
        }

        //3.判断是否可以向下翻页
        if(pageNum==totalPage){
            pageHtml+="<li class=\"disabled\"><a href=\"#\">&raquo;</a></li>";
        }else{
            pageHtml+="<li><a href=\"#\" onclick=\"nextPage()\">&raquo;</a></li>";
        }
        pageHtml+="</ul>";
        alert(JSON.stringify(currentCount))
        $("#page").html(pageHtml);
    },"json") 
}

function prePage(){
    pageNum=pageNum-1;
    findOrder(cid);
}
//向下翻页
function nextPage(){
    pageNum=pageNum+1;
    findOrder(cid);
}

//指定页跳转
function selectPage(pn){
    pageNum=pn;
    findOrder(cid);
}
function delOrder(orderNum){
    location.href="${pageContext.request.contextPath}/order/delOrder?orderNum="+orderNum;
} 

</script>
2.html 部分
<body>
    <table class="table table-striped">
        <tr>
            <td colspan="5"><a
                href="${pageContext.request.contextPath}/addCustomer.jsp"
                class="btn btn-primary btn-lg active" role="button">Add Customer</a>
            </td>

        </tr>
        <tr>
            <td>序号</td>
            <td>图片</td>
            <td>客户名称</td>
            <td>联系方式</td>
            <td>操作</td>
        </tr>

        <s:iterator value="list" status="count">
            <tr>
                <td><s:property value="#count.index+1" /></td>
                <td><img src="<s:property value="cusImgsrc"/>"></td>
                <td><s:property value="cusName" /></td>
                <td><s:property value="cusPhone" /></td>
                <td><a href="javascript:void(0)" class="btn btn-primary btn-sm"
                    onclick="delCustomer(<s:property value="id"/>)">删除客户</a> <a
                    href="javascript:void(0)"
                    onclick="findOrder(<s:property value="id"/>)"
                    class="btn btn-primary btn-sm" data-toggle="modal"
                    data-target="#myModal">订单详情</a></td>
            </tr>
        </s:iterator>
        <%-- <s:debug/> --%>
    </table>
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog"
        aria-labelledby="myModalLabel">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal"
                        aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                    <h4 class="modal-title" id="myModalLabel">订单详情</h4>
                </div>
                <div class="modal-body">
                    <table class="table table-striped">
                        <tr>
                            <td>订单编号</td>
                            <td>收货地址</td>
                            <td>订单价格</td>
                            <td>客户名称</td>
                            <td>操作</td>
                        </tr>
                        <tbody id="msg">
                        </tbody>
                    </table>
                </div>
                <div class="modal-footer">
                    <nav id="page"> </nav>
                </div>
            </div>
        </div>
    </div>

</body>

3....Action代码:
@Component
@Scope("prototype")
@Namespace("/order")
@ParentPackage("struts-default")
public class OrderAction {
    @Autowired
private OrderService orderService;

    @Action(value="delOrder", results={@Result(name="success",location="/index.jsp"),
            @Result(name="error",location="/error.jsp") })
    public String delOrder(){

    String oid = ServletActionContext.getRequest().getParameter("orderNum");
    orderService.delOrder(oid);
    return "success";
    }
    @Action("findOrder")
    public void findOrder(){
        ServletActionContext.getResponse().setCharacterEncoding("utf-8");
        Integer customerId = Integer.parseInt(ServletActionContext.getRequest().getParameter("customerId"));
      //当前页
        Integer pageNum =Integer.parseInt(ServletActionContext.getRequest().getParameter("pageNum"));
        //每页显示的个数
        Integer currentCount =  Integer.parseInt(ServletActionContext.getRequest().getParameter("currentCount"));
    //根据Id查询客户

        PageBean<Order> pageBean=orderService.findOrderByCustomer(customerId,pageNum,currentCount);

        PropertyFilter filter=new PropertyFilter() {

            // 3.将orders转换成json(案例分析分页显示)
            // 对json数据进行过滤(可以过滤一些不需要的参数),并且取消循环引用
            @Override
            public boolean apply(Object arg0, String fileName, Object arg2) {
                if(fileName.equalsIgnoreCase("cusPhone")){
                    return false;
                } if(fileName.equalsIgnoreCase("id")){
                    return false;
                } if(fileName.equalsIgnoreCase("orders")){
                    return false;
                }
            return true;
            }
        };

        String json = JSONArray.toJSONString(pageBean,filter,SerializerFeature.DisableCircularReferenceDetect);
        try {
            ServletActionContext.getResponse().getWriter().write(json);

    } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在实现分页效果时,同步和异步是两种不同的方式。 1. 同步方式:在同步方式下,页面在进行分页操作时会等待服务器返回所有数据后再进行页面渲染。这意味着用户需要等待较长时间才能看到完整的分页结果,因为服务器需要处理所有数据并一次性返回。 2. 异步方式:在异步方式下,页面在进行分页操作时会立即发送请求给服务器,并使用异步技术(如Ajax)获取数据。服务器会根据请求返回对应的分页数据,然后前端会根据返回的数据进行页面渲染,无需等待所有数据返回。这样用户可以更快地看到分页结果,并且可以在数据加载过程中进行其他操作。 在实际应用中,异步实现分页效果更为常见和推荐。它能够提升用户体验,减少等待时间,并允许用户与页面进行交互。一般来说,可以通过以下步骤来实现异步分页效果: 1. 在前端页面中添加分页组件,如翻页按钮或滚动触发加载更多数据的事件。 2. 当用户触发分页操作时,前端通过Ajax等方式向服务器发送请求,并传递当前页码等参数。 3. 服务器接收到请求后,根据参数计算出对应的分页数据,并将其返回给前端。 4. 前端接收到服务器返回的数据后,使用JavaScript等技术对页面进行渲染,更新分页结果。 5. 用户可以根据需要继续进行分页操作,重复上述步骤。 需要注意的是,在异步方式下,服务器端也需要支持分页查询,并能够根据前端传递的参数返回对应的分页数据。同时,前端需要处理分页数据的渲染和更新逻辑。这样可以实现更流畅的分页效果,并提升用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值