我在使用 Highcharts 和 servlet/jsp 时遇到一些问题。
我对 AJAX 和 JQUERY 不太熟悉。
我想在 jsp 页面 2 中显示实时线系列,并通过 java servlet 从数据库加载相关数据 (x,y)。
这是我的jsp中的代码:
<script type="text/javascript">
$(function () {
var seriesOptions = [];
$.getJSON('Grafico', function(data) {
// Populate series
for (i = 0; i < data.DeltaRealTime.length; i++){
seriesOptions[i] = {
name: data.DeltaRealTime[i].name,
data: [data.DeltaRealTime[i].key, parseFloat(data.DeltaRealTime[i].value)]
};
}
$('#container').highcharts({
chart: {
type: 'spline',
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
events: {
load: function() {
// set up the updating of the chart each second
setInterval(function() {
$.getJSON('Grafico', function(data) {
// Populate series
for (i = 0; i < data.DeltaRealTime.length; i++){
var chart = $('#container').highcharts();
chart.series[i].addPoint([data.DeltaRealTime[i].key, parseFloat(data.DeltaRealTime[i].value)]);
}
});
}, 1000);
}
}
},
title: {
text: "Valori Delta"
},
xAxis: {
title: {
text: 'Campione'
}
},
yAxis: {
labels: {
format: '{value:.1f}'
},
title: {
text: 'Delta(f)'
},
},
series: seriesOptions
});
});
});
</script>
这是“Grafico”servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/json");
PrintWriter out = response.getWriter();
try {
HttpSession session = request.getSession();
Seriale seriale = (Seriale)session.getAttribute("seriale");
if(seriale == null)
System.out.println("SERIALE=NULL");
else {
if(seriale.getSeriale().isOpen())
System.out.println("SERIALE APERTA");
System.out.println("ID SESSIONE DATI="+seriale.getSessioneDati().getId());
}
if(seriale != null && seriale.getSeriale().isOpen()) {
System.out.println("INIZIO A LEGGERE I DATI DAL DB");
Db db = new Db();
db.apriConnessione();
String sql = "SELECT * FROM MisuraRiposo ORDER BY id DESC LIMIT 1";
PreparedStatement ps = db.getConnection().prepareStatement(sql);
ResultSet rs = ps.executeQuery();
Map<String, String> data1 = new HashMap<String,String>();
Map<String, String> data2 = new HashMap<String,String>();
if(rs.next()) {
data1.put("name", "f1");
data1.put("key", rs.getString("campione"));
data1.put("value", rs.getString("f1"));
data2.put("name", "f2");
data2.put("key", rs.getString("campione"));
data2.put("value", rs.getString("f2"));
}
rs.close();
ps.close();
db.chiudiConnessione();
JSONObject json1 = new JSONObject(data1);
JSONObject json2 = new JSONObject(data2);
JSONArray array = new JSONArray();
array.put(json1);
array.put(json2);
JSONObject finalObject = new JSONObject();
finalObject.put("DeltaRealTime", array);
out.write(finalObject.toString());
}
}
catch(JSONException jse) {
jse.printStackTrace();
}
catch(Exception e) {
e.printStackTrace();
}
finally {
out.flush();
out.close();
System.out.println("Fine servlet grafico");
}
}
问题是我无法获得所需的行为。我只获得断开的点。
提前感谢您的帮助:)
最佳答案
我发现了问题。 Internet Explorer 上似乎存在 JQUERY 问题。
$.getJSON('Grafico', function(data) { ... }
在 IE11 中不起作用。
我改变了它
$.ajax({
type: $('#form1').attr('method'),
url: "Grafico",
cache:false,
dataType:'json',
success: function(data){
for (var i = 0; i < data.DeltaRealTime.length; i++){
chart1.series[i].addPoint([parseInt(data.DeltaRealTime[i].key),parseFloat(data.DeltaRealTime[i].value)]);
}
}
});
一切都运行良好。
关于java - Highcharts - 从 Servlet 到 JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25125620/