У меня проблемы с получением правильного XMLHttpRequest, я впервые использую ajax, поэтому я не уверен, правильно ли я форматирую все.Я просмотрел всю сеть и продолжаю находить в основном одну и ту же информацию и примеры, но некоторые элементы находятся в разных порядках, поэтому я не уверен, что это правильно, и я попробовал их все, и, похоже, ничего не работает.Вот мой код:
function ajaxRequest(){
var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]
if (window.XMLHttpRequest)
return new XMLHttpRequest()
else if (window.ActiveXObject){
for (var i=0; i<activexmodes.length; i++){
try{
return new ActiveXObject(activexmodes[i])
}
catch(e){
//suppress error
}
}
}
else
return false
}
function getData(fileName){
var fileLoc =encodeURI("assets/"+fileName+".html")
alert(fileLoc)
var request = new ajaxRequest()
request.open("GET",fileLoc,true)
var response = request.responseText
alert(request.status)
alert(response)
request.send(null)
return response
}
function home() {
var data = getData("home")
var contentDiv = document.getElementByClassName(content)
contentDiv.innerHTML = data;
}
home
срабатывает, когда пользователь нажимает на div на странице.я знаю, что к getData
обращаются, потому что всплывают оповещения, однако я получаю код состояния 0, это произошло как на моей локальной машине, так и на живом сервере.Я читал, что localhosts может выдавать статус 0 независимо от фактического статуса, но это происходит и на живом сервере.если бы кто-то мог помочь мне решить эту проблему и / или уточнить правильный порядок событий в функции, я был бы очень признателен.
РЕДАКТИРОВАТЬ: новый код:
function getData(fileName){
fileLoc = encodeURI("assets/"+fileName+".html")
alert(fileLoc);
request.onreadystatechange = processData;
request.open("GET",fileLoc, false);
request.send();
alert(request.readyState);
alert(response);
}
function processData(){
if (request.readyState==4){
if (request.status==200){
document.getElementsByClassName('content').innerHTML = request.responseText;
}
else{
alert("An error has occured making the request");
}
}
}