Ajax 里xmlHttpRequest对象 未定义。

时间:2021-08-18 09:33:52
以下ajax的代码, 请问我的ajax()为什么不放进aaa(url)里会出现xmlHttpReq.responseText;里的xmlHttpReq未定义,放进firefox运行会出现(xmlHttp is not defined),怎么回事,我记得之前写js,我不放进去也能执行的。
---------------------
<html>
<script language="JavaScript" type="text/javascript" >

// Creates an XMLHttpRequest instance
function createXmlHttpRequestObject()
{
var xmlHttp;
// Try to instantiate the native XMLHttpRequest object
try
{
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
}
catch(e) { }
}
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}



//实例化
function aaa(url){
var xmlHttpReq;

xmlHttpReq= createXmlHttpRequestObject();

xmlHttpReq.open("GET","exec.php?id="+url, true);

xmlHttpReq.send();

xmlHttpReq.onreadystatechange=ajax;


}
function ajax(){
document.getElementById('falcon').innerHTML=xmlHttpReq.responseText;
}



</script>

<a href="#" onclick="aaa('b')">bbb</a> <br>
<a href=javascript:aaa('a')>aaaa</a>

<div id='falcon'></div>
</html>

6 个解决方案

#1


if(xmlHttpReq.status==200){
    document.getElementById('falcon').innerHTML=xmlHttpReq.responseText;

}

#2


xmlHttpReq.readyState:
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了
if(xmlHttpReq.readyState==4){
if(xmlHttpReq.status==200){
  document.getElementById('falcon').innerHTML=xmlHttpReq.responseText;

}
}

#3


引用 2 楼 dingsongtao 的回复:
xmlHttpReq.readyState:
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了
if(xmlHttpReq.readyState==4){
if(xmlHttp……


这只是确定状态而已。。。与本主题无关。

只是本地测试,回传是绝对没问题的。。。它是传完显示的。

#4


你ajax()没有返回值?

#5


很简单,因为你在 aaa 中声明了局部变量 
var xmlHttpReq;

当然不能在外部访问啦

#6


版主正解
你把 function createXmlHttpRequestObject()
{
var xmlHttp;

中的var xmlHttp; 移到函数的外面

#1


if(xmlHttpReq.status==200){
    document.getElementById('falcon').innerHTML=xmlHttpReq.responseText;

}

#2


xmlHttpReq.readyState:
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了
if(xmlHttpReq.readyState==4){
if(xmlHttpReq.status==200){
  document.getElementById('falcon').innerHTML=xmlHttpReq.responseText;

}
}

#3


引用 2 楼 dingsongtao 的回复:
xmlHttpReq.readyState:
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了
if(xmlHttpReq.readyState==4){
if(xmlHttp……


这只是确定状态而已。。。与本主题无关。

只是本地测试,回传是绝对没问题的。。。它是传完显示的。

#4


你ajax()没有返回值?

#5


很简单,因为你在 aaa 中声明了局部变量 
var xmlHttpReq;

当然不能在外部访问啦

#6


版主正解
你把 function createXmlHttpRequestObject()
{
var xmlHttp;

中的var xmlHttp; 移到函数的外面