Javascript 如何使用脱机Plotly和Pyramid在不重新加载网页的情况下更新绘图?
我正在尝试根据网页上的某些用户选择重新加载脱机Plotly图形。我正在使用金字塔生成网页。捕获用户输入后,我使用以下jQuery为div生成内容:Javascript 如何使用脱机Plotly和Pyramid在不重新加载网页的情况下更新绘图?,javascript,jquery,python,pyramid,plotly,Javascript,Jquery,Python,Pyramid,Plotly,我正在尝试根据网页上的某些用户选择重新加载脱机Plotly图形。我正在使用金字塔生成网页。捕获用户输入后,我使用以下jQuery为div生成内容: $.getJSON("{{ request.route_url('park_list') }}" + "feature_plot/feature_ids=" + ids_string, function(data) { document.getElementById("plotly").innerHTML = data.result; });
$.getJSON("{{ request.route_url('park_list') }}" + "feature_plot/feature_ids=" + ids_string, function(data) {
document.getElementById("plotly").innerHTML = data.result;
});
getJSON的第一个参数基于Jinja2模板,其中检索url。那里的输出是一个带有“result”键/值对的json字典。该值是div内容,即绘图。然后,我尝试将其插入名为“plotly”的div容器中
问题是没有插入任何内容。我看到一个宽度为0的空块,如果我尝试修复宽度,这是成功的,但仍然没有可见的内容
我的问题是:在不重新加载页面的情况下,动态更新脱机绘图的正确方法是什么?使用Firefox Web developer console>网络选项卡检查生成的HTTP响应负载。很可能它不是JSON,或者它不包含
result
属性,导致getJSON
失败
对于隔离区调试,您还可以执行以下操作:
console.log(data);
。。。在尝试插入HTML之前
另外,如果您的目标只是通过AJAX调用替换页面上的HTML元素,在服务器端呈现生成的HTML,那么您只需执行以下操作:
$.get(url, function(html) {
$("#myelem").replace(html);
});
请显示接收json调用的金字塔视图代码。显示json调用生成的html URL也可能有帮助。只需在python中构建数据/fig json,然后通过ajax发送数据,然后使用
plotly.react()
更新图形,如[plotlyjs api]中所述。这不是更难而是更有效。谢谢!这帮助我找到了一个更好的解决方案,我只通过Pyramid发送了几个变量,但使用JS Plotly代码而不是Python代码来生成图形。