Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Highcharts-从Servlet到JSP_Java_Jquery_Jsp_Servlets_Highcharts - Fatal编程技术网

Java Highcharts-从Servlet到JSP

Java Highcharts-从Servlet到JSP,java,jquery,jsp,servlets,highcharts,Java,Jquery,Jsp,Servlets,Highcharts,我对Highcharts和servlet/jsp有一些问题 我不太熟悉AJAX和JQUERY 我想在一个jsp Page2实时行序列中显示通过Javaservlet从数据库加载的相关数据x,y 这是我的jsp中的代码: <script type="text/javascript"> $(function () { var seriesOptions = []; $.getJSON('Grafico', function(data) { // Pop

我对Highcharts和servlet/jsp有一些问题

我不太熟悉AJAX和JQUERY

我想在一个jsp Page2实时行序列中显示通过Javaservlet从数据库加载的相关数据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)]);
                            }
                        }
                    });

所有这些都工作得很好。

$。getJSON描述:使用GET HTTP请求从服务器加载JSON编码的数据。然而,在servlet中有一个doPost方法,而不是doGet。很抱歉忽略了这个信息,但我的doGet方法只是对doPost方法的调用:protectedvoid doGetHttpServletRequest请求,HttpServletResponse响应抛出ServletException,IOException{doPostrequest,response;}。我建议的一点是,当所有内容都定义为$function时,JS很难读取{并且没有任何东西是像函数x那样的命名函数{如果您已经创建了调用Ajax的函数和成功处理程序func命名的函数,那么您可以在不同的点调用它们,而不必复制和粘贴它们的代码两次。这也可能使您更容易知道发生了什么,从而解决问题。只是想一想。我添加了doPost方法的finalObject.toString方法d打印出如下字符串:{DeltaRealTime:[{name:f1,value:20099506.5,key:362},{name:f2,value:20055460.1,key:362}]}其中36220099506.5是f1系列的x,y值,36220055460.1是f2系列的x,y值。现在返回json,如果是,则需要解析json,使其具有x/y值,而不是值/键。此外,所有值都应该是数字,但日期需要是时间戳时间(以毫秒为单位)。