na ajax seccess is de variabele niet globaal meer
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
var filters;
var addressPoints;
function ajaxCallBack(wtt){ console.log(wtt);
addressPoints = wtt.arr; // alle coordinaten in lng/lat
filters = wtt.filter; // alle filterselecties array
}
var addressPoints;
function ajaxCallBack(wtt){ console.log(wtt);
addressPoints = wtt.arr; // alle coordinaten in lng/lat
filters = wtt.filter; // alle filterselecties array
}
De ajax word hier geladen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
jQuery.ajax({
type: "GET",
url: "<?=HTML_ROOT?>inc/leaf_ajax.php
contentType: "application/json",
dataType: "json",
async: true,
crossDomain: true,
success: function (wtt) {
ajaxCallBack(wtt);
},
error:function (xhr, ajaxOptions, thrownError){
console.log(xhr.status); //throw any errors
}
});// end ajax
var a;
var customOptions =
{
'maxWidth': '500',
'className' : 'custom'
}
for (var i = 0; i < addressPoints.length; i++) {
a = addressPoints[i];
var popup = a[2];
var title = a[3];
var decoded = $("<div/>").html(popup).text();
marker = L.marker(new L.LatLng(a[0], a[1]), { title: title });
marker.bindPopup(decoded,customOptions);
markers.addLayer(marker);
marker.on("click", function(e) {
common(e.latlng.lat, e.latlng.lng);
});
}
type: "GET",
url: "<?=HTML_ROOT?>inc/leaf_ajax.php
contentType: "application/json",
dataType: "json",
async: true,
crossDomain: true,
success: function (wtt) {
ajaxCallBack(wtt);
},
error:function (xhr, ajaxOptions, thrownError){
console.log(xhr.status); //throw any errors
}
});// end ajax
var a;
var customOptions =
{
'maxWidth': '500',
'className' : 'custom'
}
for (var i = 0; i < addressPoints.length; i++) {
a = addressPoints[i];
var popup = a[2];
var title = a[3];
var decoded = $("<div/>").html(popup).text();
marker = L.marker(new L.LatLng(a[0], a[1]), { title: title });
marker.bindPopup(decoded,customOptions);
markers.addLayer(marker);
marker.on("click", function(e) {
common(e.latlng.lat, e.latlng.lng);
});
}
Ik krijg dan
Quote:
Uncaught TypeError: Cannot read property 'length' of undefined
en verwijst naar deze regel:
for (var i = 0; i < addressPoints.length; i++) {
addressPoints is bovenaan als var gedefinieerd.
De console.log in ajaxCallBack geeft de juiste return, maar ik kan hem dus buiten de success om niet meer gebruiken, want hij word dan undefined.
Binnen de success tag werkt hij wel, maar ik moet hem ook daarbuiten kunnen gebruiken. Deze waardes zijn niet global meer.
Het had met asynch te maken, als ik hem op false zet, dus dat hij synchroon word, dan duurt het te lang om in mijn geval de leafles map te maken.
Maar als ik nu in de callback functie de addressPoints loop laat draaien, dan werkt het wel, maar omdat je ajax nog niet klaar is doordat hij niet synchroon loopt krijg ik:
Quote:
caught TypeError: Cannot read property '_latLngToNewLayerPoint' of null
at NewClass._animateZoom (leaflet-min.js:3)
at NewClass._animateZoom (leaflet-min.js:3)
Hoe kan dit het beste opgelost worden?
Gewijzigd op 06/06/2021 20:30:50 door Daniel van Seggelen
Er zijn nog geen reacties op dit bericht.