【问题标题】:Accessing values from python in javascript after json postjson post后在javascript中从python访问值
【发布时间】:2023-03-25 18:05:01
【问题描述】:

发誓我以前做过,永远不知道要改变什么

Python

@csrf_exempt
def add_trip_to_map(request):
    trip_id = request.POST['trip_id']
    trip = Trip.objects.get(pk = trip_id)
    orig, dest = trip.load.orig, trip.load.dest
    data = {'orig_lat':str(orig.lat),
            'orig_lon':str(orig.lon),
            'dest_lat':str(dest.lat),
            'dest_lon':str(dest.lon)}
    return HttpResponse(json.dumps(data))

JS

    $.post( "{% url 'add_trip_to_map' %}", { trip_id: trip_id }, function( data ) {
console.log(data);
    //console.log(data["dest_lon"]);

    var marker = new mapboxgl.Marker()
.setLngLat([data["dest_lat"], data["dest_lon"]])
.addTo(map);

console.log(data) 如下所示:

{"orig_lat": "33.493100", "orig_lon": "117.131700", "dest_lat": "32.454500", "dest_lon": "99.738100"}

但我无法访问 js 中的值

lng_lat.js:40 Uncaught Error: Invalid LngLat object: (NaN, NaN)

【问题讨论】:

    标签: javascript jquery json post


    【解决方案1】:

    我假设您的第一个问题是:您的帖子的返回值是一个字符串。如果是这样,你需要转换它:

     data = JSON.parse(data);
    

    第二个问题与您的 lon/lat 相关:它们必须在 -90 ... +90 范围内

    mapboxgl.accessToken = 'pk.eyJ1IjoiZmFyYWRheTIiLCJhIjoiTUVHbDl5OCJ9.buFaqIdaIM3iXr1BOYKpsQ';
    var map = new mapboxgl.Map({
        container: 'map',
        style: 'mapbox://styles/mapbox/streets-v11', // stylesheet location
        center: [-74.5, 40], // starting position [lng, lat]
        zoom: 9 // starting zoom
    });
    
    var data = '{"orig_lat": "33.493100", "orig_lon": "117.131700", "dest_lat": "32.454500", "dest_lon": "99.738100"}';
    
    data = JSON.parse(data);
    
    var lon = (Math.abs(parseFloat(data["dest_lon"])) > 90) ? '90' : data["dest_lon"];
    var lat = (Math.abs(parseFloat(data["dest_lon"])) > 90) ? '90' : data["dest_lat"];
    
    var marker = new mapboxgl.Marker()
            .setLngLat([data["dest_lat"], data["dest_lon"]])
            .addTo(map);
    <script src='https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.js'></script>
    <link href='https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.css' rel='stylesheet' />
    
    
    <div id='map' style='width: 400px; height: 300px;'></div>

    【讨论】:

    • 感谢您回答我的问题,并再次感谢您期待并回答我的下一个问题
    • @amchugh89 很高兴为您提供帮助
    猜你喜欢
    • 2013-01-20
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 2018-06-20
    • 2016-10-06
    • 1970-01-01
    相关资源
    最近更新 更多