json post之后在javascript中从python访问值

json post之后在javascript中从python访问值,javascript,jquery,json,post,Javascript,Jquery,Json,Post,我发誓我以前做过这件事,我永远都不知道该怎么改变 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),

我发誓我以前做过这件事,我永远都不知道该怎么改变

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(数据)如下所示:

{"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)

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

 data = JSON.parse(data);
第二个问题与你的lon/lat有关:它们必须在-90范围内+九十

mapboxgl.accessToken='pk.eyj1ijoizmfyywrhetiilcjhijoituvhdl5ocj9.bufakidaim3ixr1boykpsq';
var map=new mapboxgl.map({
容器:“映射”,
风格:'mapbox://styles/mapbox/streets-v11“,//样式表位置
中心:[-74.5,40],//起始位置[lng,lat]
缩放:9//开始缩放
});
var数据=“{“原始数据”:“33.493100”,“原始数据”:“117.131700”,“目标数据”:“32.454500”,“目标数据”:“99.738100”}”;
data=JSON.parse(数据);
var lon=(Math.abs(parseFloat(data[“dest_lon”]))>90)'90分:数据[“目的地”];
var lat=(Math.abs(parseFloat(数据[“dest_lon”]))>90)'90分:数据[“目的地”];
var marker=new mapboxgl.marker()
.setLngLat([data[“dest_lat”]、data[“dest_lon”])
.addTo(地图)


感谢您回答我的问题,并再次感谢您预测并回答我的下一个问题question@amchugh89很高兴能帮忙