na ajax seccess is de variabele niet globaal meer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java developer met testervaring

Java developer met testervaring Functieomschrijving "De drempel tussen de burger en de Belastingdienst zo laag mogelijk houden: dat is de belangrijke taak van ons team. Dit doen we door het burgerportaal Mijn Belastingdienst continu te verbeteren." René, Java-specialist bij de Belastingdienst. De keten Interactie is een samenwerkingsverband van alle dienstonderdelen binnen de Belastingdienst. Samen zorgen we dat het contact met burgers en bedrijven goed kan plaatsvinden. Onze belangrijkste opgave? Zoveel mogelijk digitaliseren. Dat doen we binnen het onderdeel Informatievoorzieningen (IV), de ICT-organisatie van de Belastingdienst. Denk bij de producten die IV-Interactie ontwikkelt en onderhoudt aan portalen, formulieren en authenticatie- en

Bekijk vacature »

Daniel van Seggelen

Daniel van Seggelen

06/06/2021 19:53:12
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}    


De ajax word hier geladen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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);            
                            });
                        }
                        


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)


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.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.