打算写一个简单的AJAX通用类,刚写了个 get方法,测试了一下,出错,大家帮解决!
JS脚本:
function Ajax()
{
this.xmlhttp=false;
if(window.ActiveXObject)
{
var ieArr=["Msxml2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0;i<ieArr.length;i++)
{
try
{
xmlhttp= new ActiveXObject(ieArr[i]);
break;
}
catch(e)
{
continue;
}
}
}else if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
if (!xmlhttp) window.alert("您的浏览器不支持 XMLHttpRequest 对象!");
}
Ajax.prototype.AjaxRequest=function(method,url,callback)
{
this.xmlhttp.open(method,url,true);
this.xmlhttp.OnReadyStateChange=function()
{
if(xmlhttp.readyState ==4)
{
if(xmlhttp.status==200)
{
callback(this.xmlhttp);
}
}
}
this.xmlhttp.send(null);
}页面url:(测试页 ShowData.aspx)
protected void Page_Load(object sender, EventArgs e)
{
string val = "我是结果";
Response.Clear();
Response.Write(val);
Response.Flush();
Response.End();
}
前台页面:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script src="AJAX Reg/Ajax.js"></script>
<script language="javascript" type="text/javascript">
function DisplayData()
{
var ajax=new Ajax();
ajax.AjaxRequest("Get","ShowData.aspx",ret)
}
function ret(obj)
{
alert(obj.responseText);
} </script>
</head>
<body>
<form id="form1" runat="server">
<input id="btn1" type="button" value="查看" onclick="DisplayData()" />
<div id="ShowData">
</div>
</form>
</body>
</html>点击 button 出现错误 对象不支持属性或方法,错误在 红色地方
JS脚本:
function Ajax()
{
this.xmlhttp=false;
if(window.ActiveXObject)
{
var ieArr=["Msxml2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0;i<ieArr.length;i++)
{
try
{
xmlhttp= new ActiveXObject(ieArr[i]);
break;
}
catch(e)
{
continue;
}
}
}else if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
if (!xmlhttp) window.alert("您的浏览器不支持 XMLHttpRequest 对象!");
}
Ajax.prototype.AjaxRequest=function(method,url,callback)
{
this.xmlhttp.open(method,url,true);
this.xmlhttp.OnReadyStateChange=function()
{
if(xmlhttp.readyState ==4)
{
if(xmlhttp.status==200)
{
callback(this.xmlhttp);
}
}
}
this.xmlhttp.send(null);
}页面url:(测试页 ShowData.aspx)
protected void Page_Load(object sender, EventArgs e)
{
string val = "我是结果";
Response.Clear();
Response.Write(val);
Response.Flush();
Response.End();
}
前台页面:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script src="AJAX Reg/Ajax.js"></script>
<script language="javascript" type="text/javascript">
function DisplayData()
{
var ajax=new Ajax();
ajax.AjaxRequest("Get","ShowData.aspx",ret)
}
function ret(obj)
{
alert(obj.responseText);
} </script>
</head>
<body>
<form id="form1" runat="server">
<input id="btn1" type="button" value="查看" onclick="DisplayData()" />
<div id="ShowData">
</div>
</form>
</body>
</html>点击 button 出现错误 对象不支持属性或方法,错误在 红色地方
解决方案 »
- 我用正则匹配UINCODE的问题
- 三层中修改数据问题!
- 未能打开元数据文件“f:\解决方案\dll\Huitu.Web.UI.Menu.dll”--“版本 2.0 不是兼容版本。”
- 如何取掉转义符\r\n2 这样的字符在回传值时要出错,!!!!
- 请问asp.net中如何引用公共的头文件?
- 变态的IIS问题,超级急,请有经验的同志们不宁赐教
- 发手机短信 接收到时乱码 怎么处理??
- 这个程序错在那,怎么改呢
- CheckBox的CheckedChanged事件的问题。
- 大家有没有使用过image web控件,怎么我不能将它与数据库绑定??
- 如何在匿名访问网页的情况下 获得当前WINDOWS登录用户名?
- 请问在页面刷新后如何保存RadioButtonList控件的状态?
这句 OnReadyStateChange 没有大写字母的 你当成C#了吧
var XmlHttp=false;
function AjaxSet()
{
if (window.XMLHttpRequest)
{
XmlHttp = new XMLHttpRequest;
}
else
{
try
{
XmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
XmlHttp= new ActiveXObject("Msxml2.XMLHTTP");
}
}
}
function AjaxSendServer()
{
AjaxSet();
var phone=document.getElementById("phone").value;
var url="Test.aspx?id="+phone;
XmlHttp.onreadystatechange=updatepage;
XmlHttp.open("GET",url,true);
XmlHttp.send(null);
}
function updatepage()
{
if(XmlHttp.readyState==4)
{
if(XmlHttp.status==200)
{
var reponse=XmlHttp.responseText;
document.getElementById("order").value=reponse;
XmlHttp=false;
}
}
}
{
this.xmlhttp=false;
if(window.ActiveXObject)
{
var ieArr=["Msxml2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0;i <ieArr.length;i++)
{
try
{
xmlhttp= new ActiveXObject(ieArr[i]);
break;
}
catch(e)
{
continue;
}
}
}else if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
if (!xmlhttp) window.alert("您的浏览器不支持 XMLHttpRequest 对象!");
}
Ajax.prototype.AjaxRequest=function(method,url,callback)
{
this.xmlhttp.open(method,url,true);
this.xmlhttp.OnReadyStateChange=function()
{
if(this.xmlhttp.readyState ==4)
{
if(this.xmlhttp.status==200)
{
callback(this.xmlhttp);
}
}
}
this.xmlhttp.send(null);
}
改成小写了,但是换了台计算机,提示this.xmlhttp.readyState为空 或者不是对象!
怎么回事啊!
说 xmlHttp 未定义我网查了查,说this 指向了windows 对象
this.xmlhttp.OnReadyStateChange=function()这里的this对象错误。这里的this不是指Ajax这个对象。而是指AjaxRequest这个对象
所以把this去掉。调试JS最好用FF调试如果要指示对象可以在Ajax类中声明
var _self = this;然后在Ajax.prototype.AjaxRequest的方法中,_self为Ajax对象
直接声明为全局变量 var xmlHttp;
后面别用this指针了