Globale Variablen in Funktion ändern

Luis Felger

Grünschnabel
Hallo,
ich hab ziemlich großes Problem. Ich habe folgende Dateien:

UserCore.js
Code:
var http = null;

var server_MaxClients = null;
var server_Port = null;
var server_Version = null;

var error = null;

if(window.XMLHttpRequest) {
	http = new XMLHttpRequest();
}

function orderFromServer(data, callback) {
	if(http != null) {
		http.open("GET", "/srv.data." + data, true);
		http.onreadystatechange = function() {
			if(http.readyState == 4) {
				try {
					var ret = null;
					ret = eval("(" + http.responseText + ")");
					
					for(var i = 0; i < ret.length; i++) {
						var data = ret[i];
					
						if(data.key == "max_clients") {
							server_MaxClients = data.value;
						}
					
						if(data.key == "port") {
							server_Port = data.value;
						}
					
						if(data.key == "version") {
							server_Version = data.value;
						}
					}
				} catch(e) {
					error = "Received string is no JSON!";
				}
				callback();
			}
		};
		http.send(null);
	}
}

index.html
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Blizzard - Main Page</title>
<script type="text/javascript" language="javascript" src="scripts/UserCore.js"></script>
<script type="text/javascript" language="javascript">
function request() {
	orderFromServer("all", update());
}

function update() {
	if(error != null) {
		var e = document.getElementById("error");
		e.innerHTML = error;
		e.style.display = "block";
		
		return;
	}
	
	document.getElementById("max_clients").innerHTML = server_MaxClients;
	document.getElementById("port").innerHTML = server_Port;
	document.getElementById("version").innerHTML = server_Version;
}
</script>
</head>
<body onload="request();">
<table border="0">
	<tr>
    	<td>Max Clients:</td>
        <td><span id="max_clients">Waiting for request...</span></td>
    </tr>
    <tr>
    	<td>Port:</td>
        <td><span id="port">Waiting for request...</span></td>
    </tr>
    <tr>
    	<td>Version:</td>
        <td><span id="version">Waiting for request...</span></td>
    </tr>
</table>
<p>
<b><span id="error" style="display:none;">No error found!</span></b>
</p>
</body>
</html>

Wie man sieht, wird durch den Try-Catch Block in der Funktion orderFromServer bei einem Fehler (wenns kein JSON ist), in die globale Variable error eine Nachricht geschrieben. Diese wird durch die callback-Funktion (update) in der index.html ausgegeben. Allerdings bleibt die Variable error - egal was ich mache - immer null. Ich hab's auch schon mit window.error probiert, aber es tut sich nichts.

Vielen Dank im Voraus
 
Ich bin so dämlich! Mein Problem war, dass ich in der index.html folgenden Fehler gemacht habe:
Code:
orderFromServer("all", update());

dabei heißt es so:
Code:
orderFromServer("all", update);

Jetzt funktionierts.
 

Neue Beiträge

Zurück