na ajax seccess is de variabele niet globaal meer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Opdracht: DevOps Expert/Ontwikkelaar @ Assen

2021-03-23 iSense Opdracht: DevOps Expert/Ontwikkelaar Ben jij een ervaren DevOps expert / applicatiebeheerder-ontwikkelaar? Heb jij ervaring met het analyseren van productieproblemen en het oplossen hiervan? Lees dan snel verder! ISBI49414 Organisatie De organisatie is een van de grotere ICT-dienstverleners binnen de Rijksoverheid. Zij ondersteunen de primaire processen van diverse uitvoeringsorganisaties en de ministeries. Taken Als DevOps expert / applicatiebeheerder-ontwikkelaar ben jij verantwoordelijk voor een set van applicaties. Met jouw kennis en vaardigheden ben je tot het volgende in staat: Je analyseert productieproblemen en lost ze op, al dan niet in samenwerking met andere afdelingen. Je bouwt kleine, maar ook grote

Bekijk vacature »

Opdracht: DevOps Ontwikkelaar @ Assen

2021-03-23 iSense Opdracht: DevOps Ontwikkelaar Als DevOps ontwikkelaar ben jij verantwoordelijk voor het ontwikkelen en onderhouden van het portaal en daaraan gerelateerde applicaties. ISBI49429 Organisatie De organisatie is een van de grotere ICT-dienstverleners binnen de Rijksoverheid. Zij ondersteunen de primaire processen van diverse uitvoeringsorganisaties en de ministeries. Taken Je bouwt in teamverband aan functionele wijzigingen op de applicatie die uit de digitale strategie voortvloeien. Je analyseert productie-incidenten en lost ze op, in samenwerking met andere afdelingen. Je houdt je bezig met applicatie monitoring en de doorontwikkeling daarvan. Je draagt bij aan een effectieve ontwikkelomgeving door mee te werken aan een

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.