我无法让这个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;
}
当用户点击页面中的div时,会触发 home
。我知道正在访问getData
因为警报弹出,但是我得到状态代码0,这发生在我的本地机器和实时服务器上。我读到无论实际状态如何,localhost都可以抛出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");
}
}
}
答案 0 :(得分:1)
您正在告诉XMLHTTPRequest以异步方式发送请求,这意味着您等待响应时会执行其余脚本。您将获得响应代码0(未初始化)和空响应,因为当您从当前状态和响应的函数返回时。
相反,您希望定义在状态更改时调用的函数,或者让XMLHTTPRequest同步工作。
请参阅this tutorial以获取一个可以帮助您的简单示例。