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);