老师,求助
来源:2-4 实现动态图表
孬帮手慕小菜
2020-04-11 20:34:59
为什么我的Ajax里面的函数没有作用?
server:
package com.andreas.server;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
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;
/**
* Servlet implementation class server
*/
@WebServlet("/server")
public class server extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public server() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//获取全局ServletContext对象
ServletContext context = request.getServletContext();
//提取ServletContext中的TimeList,ValueList;
List<String>TimeList= (List)context.getAttribute("TimeList");
List<String>ValueList = (List)context.getAttribute("ValueList");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("服务运行正常");
Map result = new HashMap();
result.put("TimeList", TimeList);
result.put("ValueList", ValueList);
String json = JSON.toJSONString(result);
response.getWriter().println(json);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}Listener:
package com.andreas.server;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
public class RequestTotalListener implements ServletContextListener, ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
// TODO Auto-generated method stub
ServletRequestListener.super.requestDestroyed(sre);
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
// TODO Auto-generated method stub
//取出全局ServletContext内的数据
List<String>TimeList = (List)sre.getServletContext().getAttribute("TimeList");
List<Integer>ValueList =(List) sre.getServletContext().getAttribute("ValueList");
//获取当前时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("HH-mm"); //格式化
String time = sdf.format(date); //获取当前时间
if(TimeList.indexOf(time) == -1) { //indexOf 方法如果Time List内有time将返回所在位置,如果没有将返回-1
//如果没有发现TimeList内有当前时间,将增加当前时间至TimeList中,并且为ValueList添加个新值(1次访问)
TimeList.add(time);
ValueList.add(1);
//再将更改后的数据重新赋给getServletContext。
sre.getServletContext().setAttribute("TimeList", TimeList);
sre.getServletContext().setAttribute("ValueList", ValueList);
}else {
//如果找到了当前时间,将访问量ValueList+1
int index = TimeList.indexOf(time); //寻找当前时间time的位置,为了修改VilueList相对应位置的数据
int value = ValueList.get(index);//获取到ValueList对应位置的数据
ValueList.set(index, value+1);//修改相应位置的value数据(+1次访问量);
//再将更改后的数据重新赋给getServletContext。
sre.getServletContext().setAttribute("ValueList", ValueList);
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
ServletContextListener.super.contextDestroyed(sce);
}
@Override
public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
List<String>TimeList = new ArrayList<>();
List<Integer> ValueList = new ArrayList<>();
sce.getServletContext().setAttribute("TimeList", TimeList); //将TimeList存放在ServletContext里
sce.getServletContext().setAttribute("ValueList", ValueList);//将ValueList存放在ServletContext里
}
}html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/echarts.min.js"></script>
<script type="text/javascript" src="js/jquery-3.4.1.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px; height: 400px;"></div>
<script type="text/javascript">
$.ajax({
url :"/servlettotal/server",
type : "get",
dataType : "json",
success : function(json){
alert("123");
console.log(json.TimeList);
console.log(json.ValueList);
}
})
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title : {
text : '访问量统计'
},
tooltip : {},
legend : {
data : [ '访问量' ]
},
xAxis : {
data : [ "衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子" ]
},
yAxis : {},
series : [ {
name : '访问量',
type : 'line',
data : [ 5, 20, 36, 10, 10, 20 ]
} ]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
1回答
同学你好,Server中应该返回json字符串,否则会因为类型不符合,执行ajax中error函数,不执行success函数。修改如下图:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题