Ajax-ответ в django

У меня есть карта с некоторыми маркерами на них, и я использую AJAX для получения последних данных из базы данных. Проблема в том, что когда я присваиваю вызываемую информацию, она путается с позиционированием маркеров. Если я помещаю Popup вне вызова ajax, я не могу получить доступ к моим измерениям. Если я присваиваю их в вызове ajax, это портит интерфейс, но я получаю правильные результаты.


for (i in motePos) {

    mote[i] = L.marker(motePos[i], {
        icon: SensorIcon
    });
    mote[i].name = motePosName[i];
    mote[i].id = motePosId[i];

    markers.addLayer(mote[i].on('click', function(e) {
        alert(this.id);
        var sID = this.id;
        $.ajax({
            type : 'GET',
            url : "{% url 'agriculture:sensor_ms' %}",
            data : {"sID" : sID},
            success: function(response){    
                var measurement = JSON.parse(response["measurement"]);
                var fields = measurement[0]["fields"];
                console.log(fields)
                var sensorID = "href='{% url 'agriculture:tree_sensor' 12345 %}'";
                var url_mask = sensorID.replace("12345", fields["sensor"]);
                mote[i].bindPopup("<h3>Tree Sensor: " + motePosName[i] + "</h3>" 
                + "<hr>" + "Soil Moisture (50 cm): " + fields["soil_moisture_depth_1"] + "cbar" 
                + "<br>" + "<b>Soil Moisture (20 cm): " + fields["soil_moisture_depth_2"] + "cbar" 
                + "<br>" + "Temperature: " + fields["soil_temperature"] + "°C" 
                + "<br>" + "<br><a class='popup_button small_text' "+url_mask+" ><span>Sensor Page</span></a>").openPopup();    
            }
        })      
    }));  
}
map.addLayer(markers);

просмотр :

def Sensor_Measurements(request):
    if request.is_ajax and request.method == "GET" :
        sID = request.GET.get("sID")
        tree_sensors = TreeSensor.objects.filter(pk = sID)
        late = TreeSensorMeasurement.objects.filter(sensor_id__in = tree_sensors).latest('datetime')
        measurement = serializers.serialize('json',[late])
        return JsonResponse({"measurement": measurement}, status=200)

    return JsonResponse({"error": ""}, status=400)

Как мне взять ответ из ajax и присвоить его после этого? В основном, как сделать что-то вроде :

for (i in motePos) {

    mote[i] = L.marker(motePos[i], {
        icon: SensorIcon
    });
    mote[i].name = motePosName[i];
    mote[i].id = motePosId[i];

    markers.addLayer(mote[i].on('click', function(e) {
        var sID = this.id;
        $.ajax({
            ...
            success: function(response){    
                var measurement = JSON.parse(response["measurement"]);
                var fields = measurement[0]["fields"];   
            }
        })    
                var sensorID = "href='{% url 'agriculture:tree_sensor' 12345 %}'";
                var url_mask = sensorID.replace("12345", fields["sensor"]);
                mote[i].bindPopup("<h3>Tree Sensor: " + motePosName[i] + "</h3>" 
                + "<hr>" + "Soil Moisture (50 cm): " + fields["soil_moisture_depth_1"] + "cbar" 
                + "<br>" + "<b>Soil Moisture (20 cm): " + fields["soil_moisture_depth_2"] + "cbar" 
                + "<br>" + "Temperature: " + fields["soil_temperature"] + "°C" 
                + "<br>" + "<br><a class='popup_button small_text' "+url_mask+" ><span>Sensor Page</span></a>").openPopup();   
    }));  
}
map.addLayer(markers);
Вернуться на верх