Я пытаюсь сделать xmlHttpRequest
до загрузки тела страницы. При попытке назначить функцию onreadystatechange
эта функция мгновенно вызывается , возвращая xmlHttp.readyState
всегда 0 .
Я полагаю, что я звоню неправильно. Как мне правильно назначить функцию?
//create xmlHttp object
function CreateXmlHttp() {
try {
var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(eo) {
xmlHttp = null;
}
}
if(!xmlHttp && typeof XMLHttpRequest != "undefined") {
xmlHttp = new XMLHttpRequest();
}
return xmlHttp;
}
//request call
function post(url, func, XML) {
var xmlHttp = CreateXmlHttp();
//problem?
xmlHttp.onreadystatechange = (function (xmlHttp, func) {
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
func(xmlHttp.responseText);
}
})(xmlHttp, func);
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
if(XML==null){
XML = '';
}
xmlHttp.send(XML);
}
post('/json/checklogged', function (data) {
var jsonData = eval("(" + data + ")"); //I know, this eval is dangerous
if(jsonData.logged){
var url = '${nextUrl}';
post(url, function(data){
document.open();
document.write(data);
document.close();
});
history.pushState({}, '', url);
}
});