Sto provando l'uso dell'oggetto XMLHttpRequest attraverso il browser seguendo l'esempio presentato qui.
Ho diviso il codice in due parti. Questa è la prima (dichiarazione della variabile inclusa):
codice:
var req;

function loadXMLDoc(url) {
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send();
		}
	}
}

function processReqChange() {
	// only if req shows "complete"
	if (req.readyState == 4) {
		// only if "OK"
		if (req.status == 200) {
			// ...processing statements go here...
			response = req.responseXML.documentElement;
			method = response.getElementsByTagName('method')[0].firstChild.data;
			result = response.getElementsByTagName('result')[0].firstChild.data;
			eval(method + '(\'\', result)');
		} else {
			alert("There was a problem retrieving the XML data:\n" + req.statusText);
		}
	}
}
E questa la seconda, in pratica la sola funzione che lancia la richiesta al file lato server:
codice:
function checkName(input, response) {
	if (response != "") {
		// Response mode
		message = document.getElementById("nameCheckFailed");
		if (response == "1") message.className = "error";
		else message.className = "hidden";
	} else {
		// Input mode
		url = "XMLHttpRequest.asp?q=" + input;
		loadXMLDoc(url);
	}
}
Ho inserito la prima parte in un file js che ho incluso nella pagina html di prova, e la seconda direttamente nella pagina. Come mai separando in questo modo i frammenti di codice, e provando a dichiarare la variabile req o nel documento o nel js esterno, lo script non dà nessun risultato?