js轮询

我是在用于点击支付的时候开启轮询,结束了 就停止

简单例子

<div id="result"></div>
<script src="https://cdn.bootcss.com/jquery/3.0.0/jquery.slim.min.js"></script>

    <script type="text/javascript">
        $(function () {

            window.setInterval(function () {

                $.get("/timeline",
                    {"timed": new Date().getTime()},
                    function (data) {
                        $("#logs").append("[data: " + data + " ]<br/>");
                    });
            }, 3000);

        });
</script>
package com.kaishengit.dao;

import com.kaishengit.entity.Message;
import com.kaishengit.util.DbHelp;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.util.List;

public class MessageDao {

    public List<Message> findAll() {
        String sql = "select * from t_message order by id desc";
        return DbHelp.query(sql,new BeanListHandler<>(Message.class));
    }

    public List<Message> findByMaxId(int maxId) {
        String sql = "select * from t_message where id > ? order by id desc";
        return DbHelp.query(sql,new BeanListHandler<>(Message.class),maxId);
    }
}
package com.kaishengit.entity;

public class Message {

    private Integer id;
    private String message;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
package com.kaishengit.service;

import com.kaishengit.dao.MessageDao;
import com.kaishengit.entity.Message;

import java.util.List;

public class MessageService {

    private MessageDao messageDao = new MessageDao();

    public List<Message> findAll() {
        return messageDao.findAll();
    }

    public List<Message> findByMaxId(int maxId) {
        return messageDao.findByMaxId(maxId);
    }
}
package com.kaishengit.web;

import com.google.gson.Gson;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class BaseServlet extends HttpServlet {

    /**
     * 给客户端响应一个JSON数据
     * @param object 要被转成JSON的对象
     * @param response
     * @throws IOException
     */
    public void renderJSON(Object object,HttpServletResponse response) throws IOException {
        String json = new Gson().toJson(object);
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/json;charset=UTF-8");

        PrintWriter out = response.getWriter();
        out.print(json);
        out.flush();
        out.close();
    }
}
package com.kaishengit.web;

import com.google.gson.Gson;
import com.kaishengit.entity.Message;
import com.kaishengit.service.MessageService;
import org.apache.commons.lang3.StringUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/timeline")
public class TimeLineServlet extends BaseServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String maxId = req.getParameter("maxId");
        int id = 0;
        if(StringUtils.isNumeric(maxId)) {
            id = Integer.parseInt(maxId);
        }


        MessageService messageService = new MessageService();
        List<Message> messageList = messageService.findByMaxId(id);
        renderJSON(messageList,resp);
    }
}
# jdbc config  C:\Program Files\Java\jdk1.8.0_101\bin\native2ascii.exe
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///db_22
jdbc.username=root
jdbc.password=rootroot
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<div id="result"></div>
<script src="/static/js/jquery-1.11.3.min.js"></script>
<script>
    $(function () {
        var maxId = 0;

        function call(){
            $.get("/timeline",{"maxId":maxId}).done(function(data){
                if(data.length) {
                    for(var i = 0;i < data.length;i++) {
                        var item = data[i];
                        var html = "<h3>"+item.message+"</h3>";
                        if(maxId == 0) {
                            $(html).appendTo($("#result"));
                        } else {
                            $(html).prependTo($("#result"));
                        }
                    }
                    maxId = data[0].id;
                }
            }).error(function(){
                alert("服务器错误");
                clearInterval(st);
            });
        }
        call();

        var st = setInterval(call,5000);



    });
</script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,081评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,131评论 19 139
  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 4,742评论 7 31
  • 我和你,在不同的世界游走着。 你便是你,我便是我。 从来与你,格格不入,是因为心的距离抑或是身体的距离。 在我离你...
    Ling_00阅读 323评论 0 3
  • 练就吸引力的三个方法 赢取好感的小技巧 常听到一个说法,要赞美一个人时,越具体越好;而要批评一个人时,则最好要抽象...
    枷行栅言阅读 186评论 2 3