Hallo,
Ik heb een simpele webservice in C# die 1 parameter ontvangt en een boolean waarde terug geeft. Deze webservice roep ik aan via javascript op de volgende manier:
Alleen elke keer als deze code uitgevoerd wordt zie ik het geheugen van de browser met een paar kB omhoog gaan in de task manager. Ik kan niet goed achterhalen waar dit vandaan komt,
Ik heb al geprobeerd om de onreadystatechanged event op een lege functie in te stellen, en ook al om niet telkens een nieuw XmlHttpRequest object aan te maken, maar niets helpt.
Doe ik iets fout of moet ik de fout toch ergens anders zoeken?
Ik heb een simpele webservice in C# die 1 parameter ontvangt en een boolean waarde terug geeft. Deze webservice roep ik aan via javascript op de volgende manier:
JavaScript:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
| var timer = null; var onreadyallowed = false; var alertallowed = true; var _Oid; var _Timeout; var _UpdateTekst; var _TheRequest; function StartUpdateControle(Oid, Timeout, UpdateTekst) { _Oid = Oid; _Timeout = Timeout; _UpdateTekst = UpdateTekst; _TheRequest = GetXMLObject(); StopUpdateControle(); timer = setTimeout("CheckForUpdates()", _Timeout); } function GetXMLObject() { //Construct an XMLHTTP Object to handle our HTTP Request var xmlHttpReq = false; try { xmlHttpReq = new XMLHttpRequest(); } catch (err) { try { xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (err2) { xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); } } if (!xmlHttpReq) { return null } return xmlHttpReq; } function CheckForUpdates() { onreadyallowed = true; if (_TheRequest == null) { return; } _TheRequest.open('POST', 'Services/CheckForUpdate.asmx', true); _TheRequest.setRequestHeader('Content-Type', 'text/xml; charset=utf-8'); _TheRequest.setRequestHeader('SOAPAction', 'http://tempuri.org/IsUpdateAvailable'); _TheRequest.onreadystatechange = function () { if (_TheRequest.readyState == 4 && onreadyallowed) { onreadyallowed = false; ParseResponse(); } } try { var xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; xml += "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"; xml += "<soap:Body>"; xml += "<IsUpdateAvailable xmlns=\"http://tempuri.org/\">"; xml += "<Oid>" + _Oid + "</Oid>"; xml += "</IsUpdateAvailable>"; xml += "</soap:Body>"; xml += "</soap:Envelope>"; _TheRequest.send(xml); } catch (e) { error = ("Error while sending: " + e); error += ("e.number is: " + (e.number & 0xFFFF) + "(" + e.number + ")"); error += ("e.description is: " + e.description); error += ("e.name is: " + e.name); error += ("e.message is: " + e.message); error += ("xmlHttpReq.status is: " + xmlHttpReq.status); error += ("xmlHttpReq.statusText is: " + xmlHttpReq.statusText); alert(error); } } function ParseResponse() { if (_TheRequest.responseXML.getElementsByTagName('IsUpdateAvailableResponse')[0] == null) { return; } else { var result = _TheRequest.responseXML.getElementsByTagName('IsUpdateAvailableResponse')[0].text; if (result == null) { result = _TheRequest.responseXML.getElementsByTagName('IsUpdateAvailableResponse')[0].textContent; } if ("true" == result) { alert(_UpdateTekst); } } _TheRequest.onreadystatechanged = nill; _TheRequest.abort(); timer = setTimeout("CheckForUpdates()", _Timeout); } function nill() { } |
Alleen elke keer als deze code uitgevoerd wordt zie ik het geheugen van de browser met een paar kB omhoog gaan in de task manager. Ik kan niet goed achterhalen waar dit vandaan komt,
Ik heb al geprobeerd om de onreadystatechanged event op een lege functie in te stellen, en ook al om niet telkens een nieuw XmlHttpRequest object aan te maken, maar niets helpt.
Doe ik iets fout of moet ik de fout toch ergens anders zoeken?
Hail to the king baby!