javascript - 使用烧瓶、ajax 绘制传单后重新渲染页面
问题描述
嗨,我正在开发一个带有 Flask 和 Leaflet 地图的应用程序。地图上有几何对象。在绘图工具的帮助下,用户在地图上绘制多边形形状,并且所有落在形状内的对象数据(即“id”)都应该在 html 表中呈现。绘制形状后,POST 请求就完成了。虽然我可以在 traceback 中打印出数据并在 Devtools Network Preview 选项卡中看到它,但我仍然无法在 html 中呈现这些数据。
这是我在绘制形状后发送 Post 请求的 JS 代码。输出给出形状顶点坐标。
mymap.on('pm:create', e => {
var map_data = e["layer"]["_latlngs"][0];
console.log(map_data);
$.ajax({
type: "POST",
contentType: "application/json",
url: "/",
traditional: "true",
data: JSON.stringify({map_data}),
});
});
然后我用这个坐标分配一个变量并在 app.py 中打印出来。使用不同的地理工具功能,我还资助了多边形内的东西:
shape_coord = request.get_json() //gets shape coordinates
if shape_coord:
filter_markers = marker_within_polygon(markers, shape_coord) //function finds markers within shape
filter_lines = lines_within_polygon(lines, shape_coord)//function finds lines within shape
print(shape_coord)// OK
print(filter_markers, filter_lines)//OK. prints out stuff inside polygon
这是我的 jinja2:
<tbody id="table_body">
{% for mk in filter_markers%}
<tr>
{% for ln in filter_lines %}
<th>{{ ln }}</th>
<th>{{ mk }}</th>
{% endfor %}
</tr>
{% endfor %}
</tbody>
我尝试像这样在 Ajax 中使用成功回调,但除了所需的数据之外,它还会在表中插入整个 HTML 正文标记:
mymap.on('pm:create', e => {
var map_data = e["layer"]["_latlngs"][0];
console.log(map_data);
$.ajax({
type: "POST",
contentType: "application/json",
url: "/",
traditional: "true",
data: JSON.stringify({map_data}),
success: function (data) {
$("#table_body").html(data);
});
});
我怎样才能只渲染我的标记和线条数据?
解决方案
我解决了这个问题。成功取决于正确的问题)我在这里找到了答案: 返回当前页面时不显示查询ajax响应
推荐阅读
- http-status-code-401 - 未找到从 MIA 到 UVF 404 的 Sabre 国际航班优惠
- r - 输出中带有图表的汇总表
- selenium - Selenium 返回错误:元素不可点击
- asp.net - Autofac InstancePerRequest 返回新实例
- python - x[0, ... , -1] 语法在 python 中是什么意思?
- android - 移除 Item RecyclerView 时添加自定义动画
- visual-studio-code - SetAscending Business Central 销售订单列表
- node.js - 使用 AWS Lambda 删除 Cognito 用户
- r - R:在多个变量上计算逐行 lm()
- angular - 尽管在现有模块中导入了 CommonModule,但 ngFor 仍无法正常工作