我好菜呀呀呀呀 2022-07-12 23:22 采纳率: 66.7%
浏览 53
已结题

请教一个基于django的前后端数据交互ajax+json的问题

问题遇到的现象和发生背景

在前端的html文件里的script里用json传递经纬度到后端views,后端接收后经过处理返回给前端另一经度、纬度和地名,前端接收数据后在地图上绘制圆形。
我遇到的问题是数据能从前端发到后端,但后端发的数据无法在前端页面显示,我不知道是后端发送数据的问题还是前端接受的问题,想请教一下

问题相关代码,请勿粘贴截图

后端html文件script

后端html文件script

map.addEventListener("dragend", function(){
        var token_csrf = "{{ csrf_token }}";
        var center = map.getCenter();
        alert("地图中心点变更为:" + center.lng + ", " + center.lat);
        map.clearOverlays();//清除覆盖物
        var center = map.getCenter();
        var pt = new BMapGL.Point(center.lng, center.lat);
        var marker = new BMapGL.Marker(pt,{icon: centerIcon});        // 创建标注
        map.addOverlay(marker);

        $.ajax({
        url: '/nearmap/',  //发送请求的目的地址
        data:JSON.stringify({    // JSON格式封装数据
            lng: center.lng,
            lat: center.lat
        }),
        contentType: 'application/json',
        type: "POST",
        traditional: true,    // 需要传递列表、字典时加上这句
        success: function(value) {
        //var p1 = JSON.parse(value['point1']);
        //var p2 = JSON.parse(value['point2']);
        var p1 = $("#point1").val();
        var p2 = $("#point2").val();
        //var p1=console.log(value['point1']);
        //var p2=console.log(value['point2']);
        var point = new BMapGL.Point(p1, p2);
        var circle = new BMapGL.Circle(point, 500, {
        strokeColor: 'blue',
        strokeWeight: 2,
        strokeOpacity: 0.5
    });
         map.addOverlay(circle);
        }
        //fail: function(result) {
        //}
    });

    });

前端:

前端:
@csrf_exempt   # 不可删除,删除就收不到数据
def map(request):
    if request.method == "POST":
        json_receive = json.loads(request.body)
        lng = json_receive['lng']
        lat = json_receive['lat']
        if lng!=None and lat!=None:
            lng = float(lng)
            lat = float(lat)
            tuple = fence_recommend2(lng, lat)
            name = str(tuple[0])
            point = tuple[1]   
            point1 = str(point[0])
            point2 = str(point[1])
            value = {"point1": point1, "point2": point2, "name": name}
            return JsonResponse(value, json_dumps_params={'ensure_ascii':False})

    return render(None, 'nearmap.html')


运行结果及报错内容

我遇到的问题是数据能从前端发到后端,但后端发的数据无法在前端的script调用,我不知道是后端发送数据的问题还是前端接受的问题,想请教一下

  • 写回答

3条回答 默认 最新

  • 虎子8 2022-07-13 09:23
    关注

    success 这个回调函数里面 console.log(value) 这个就是后端返回的

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月14日
  • 修改了问题 7月12日
  • 修改了问题 7月12日
  • 创建了问题 7月12日

悬赏问题

  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥500 服务器搭建cisco AnyConnect vpn
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊
  • ¥15 快速扫描算法求解Eikonal方程咨询
  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?