Door middel van een ajax request laadt ik een stukje code dat ook javascript bevat. Deze javascript voer ik uit na het laden door middel van eval(). Om te voorkomen dat de eval() aangeroepen wordt voordat de ajax call klaar is, doe ik het met een callback:
Het probleem waar ik tegenaan loop is dat eval() soms al aangeroepen wordt nog voordat de volledige ajax pagina geladen is. De request is dan al wel compleet waardoor functie validateean() wordt aangeroepen, maar omdat het resultaat nog niet compleet is wordt de javascript niet uitgevoerd.
Ik ben hier echt al dagen mee bezig maar krijg het maar niet opgelost. Ik kan er een vertraging in zetten maar omdat de vertraging willekeurig is, is geen goede oplossing.
Weet iemand of er een manier is om validateean() pas aan te roepen als niet alleen de request voltooid is maar ook het resultaat echt klaar met laden is?Of zit er toch een fout in mijn code waardoor dit probleem veroorzaakt wordt?
p.s. dit wordt allemaal gedaan in een beveiligde/afgesloten omgeving, het is alleen voor mijzelf dus dat het werkt heeft meer prioriteit dan bijvoorbeeld veiligheid
code:
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
38
39
40
41
42
43
44
45
| function one(callback) { setTimeout(validateean,250); } function two() { var url = 'id=20&ean=' + product_ean.value; var frame = 'div_result'; var requests = []; var i = requests.length; requests[i] = new XMLHttpRequest(); if (requests[i]) { url = 'getdata.php?' + url; requests[i].open('GET', url, true); requests[i].onreadystatechange = function() { if(requests[i].readyState == 4) { document.getElementById(frame).innerHTML = requests[i].responseText; requests[i] = null; } } requests[i].send(null); } } function validateean() { $("#div_result").find("script").each(function(i) { eval($(this).text()); }); } one(two()); |
Het probleem waar ik tegenaan loop is dat eval() soms al aangeroepen wordt nog voordat de volledige ajax pagina geladen is. De request is dan al wel compleet waardoor functie validateean() wordt aangeroepen, maar omdat het resultaat nog niet compleet is wordt de javascript niet uitgevoerd.
Ik ben hier echt al dagen mee bezig maar krijg het maar niet opgelost. Ik kan er een vertraging in zetten maar omdat de vertraging willekeurig is, is geen goede oplossing.
Weet iemand of er een manier is om validateean() pas aan te roepen als niet alleen de request voltooid is maar ook het resultaat echt klaar met laden is?Of zit er toch een fout in mijn code waardoor dit probleem veroorzaakt wordt?
p.s. dit wordt allemaal gedaan in een beveiligde/afgesloten omgeving, het is alleen voor mijzelf dus dat het werkt heeft meer prioriteit dan bijvoorbeeld veiligheid
[ Voor 4% gewijzigd door FireFoz op 26-09-2019 14:56 ]
Leef lekker in het nu, er is niks anders