如何在python散景图中完成框选择后触发Ajax调用

时间:2018-06-14 08:51:12

标签: javascript python ajax bokeh

我有两个图,即plot1和plot2。

Plot2启用了BoxSelectTool,我可以使用CustomJS获取所选矩形区域的点坐标。

现在我需要用获得的坐标触发一个ajax调用,让服务器端更新plot2。

以下代码段可能会帮助您理解我的意图,尽管代码无法正常运行。

    callback = CustomJS(args={}, code="""
        let geometry = cb_data['geometry'];
        let x0 = geometry['x0'];
        let x1 = geometry['x1'];

        (function($){
            let request={}, args = {};
            args['x_coord'] = [x0, x1];
            request['args'] = JSON.stringify(args);
            $.ajax({
                url: '{{ url_for('app.selection_changed') }}',
                type: 'POST',
                data: request,
                cache:false,
                success: function (response) {
                    $('.div_plot').html(response);

                },
                error: function(response){

                }
            });                
        })(jQuery);

    """)

plt.add_tools(BoxSelectTool(callback=callback, dimensions="width"))
select_overlay = plt.select_one(BoxSelectTool).overlay

1 个答案:

答案 0 :(得分:0)

以下代码段似乎是正确的方法之一:

Python方面:

$('#metric_selected').bind("MetricSelected", HandleEvent_MetricSelected);
function HandleEvent_MetricSelected(event)
{
    let request={}, args = {};
    let x = event.detail;
    args['x_coord'] = [x[0], x[1]];
    request['args'] = JSON.stringify(args);
    $.ajax({
        url: '{{ url_for('app.metric_select_changed') }}',
        type: 'POST',
        data: request,
        cache:false,
        success: function (response) {
            $('.disc_plot').html(response);

        },
        error: function(response){

        }
    });
}

JavaScript方面:

 @GetMapping("/")
 public String index(HttpServletRequest request){
 String ip=request.getRemoteAddr(); // "0:0:0:0:0:0:0:1"
 return "index";
}