提到AJAX,就不得不说到XmlHttpRequest,他可是AJAX得核心,现在很多浏览器都支持XmlHttpRequest,主要有两类。一类是以微软得IE为代表:他是以ACTIVEX组件得形式实现了XmlHttpRequest.,另一类FIREFOX为代表,他是以原生得JAVASCRIT形式提供的(至于真正是怎样的区别,我不知道,希望知道的指教下)。所以在创建XmlHttpRequest同时,经常要检验是哪种类型的浏览器。 if(window.XMLHttpRequest)
{ //Mozilla 浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)
{//设置MiME类别
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject)
{ // IE浏览器
try
{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e)
{
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e)
{}
}
}以上就是要判断是哪种类型的浏览器,但也许有人要问IE浏览器哪里为什么还有个判断,那是因为在IE5以前和后用的方式不一样。
还有两个重要的函数是:
http_request.open("GET", url, true); // 确定发送请求的方式和URL以及是否同步执行下段代码
// 确定发送请求的方式和URL以及是否同步执行下段代码,第一个参数是请求类型:POST,GET,PUT。
第二个参数是传递的地址。第三个参数是决定是否要以异步的形式传送,默认为TRUE
和 http_request.send(null);他是吧请求发送给服务器。
完整的HTML代码 <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="ajax.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language="javascript">
var http_request = false;
function send_request(url) {//初始化、指定处理函数、发送请求的函数
http_request = false;
/**alert("1");
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest)
{ //Mozilla 浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)
{//设置MiME类别
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject)
{ // IE浏览器
try
{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e)
{
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e)
{}
}
}
if (!http_request) { // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
http_request.onreadystatechange = processRequest;
// 确定发送请求的方式和URL以及是否同步执行下段代码
http_request.open("GET", url, true);
http_request.send(null);
}
// 处理返回信息的函数
function processRequest() {
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
alert(http_request.responseText);
} else { //页面不正常
alert("您所请求的页面有异常。");
}
}
}
function userCheck() {
var f = document.form1;
var username = f.username.value;
if(username=="") {
window.alert("用户名不能为空。");
f.username.focus();
return false;
}
else {
alert(username);
send_request('Back.aspx?username='+username);
}
}
</script>
<link href="css/style.css" rel="stylesheet" type="text/css">
</HEAD>
<body>
<form name="form1" action="" method="post">
用户名:<input type="text" name="username" value=""> <input type="button" name="check" value="唯一性检查" onClick="userCheck()">
<input type="submit" name="submit" value="提交">
</form>
<!--span style="cursor: pointer; text-decoration: underline" οnclick="send_request('2.jsp?username=educhina')">Send a request</span-->
</body>
</HTML>
AJAX中的XmlHttpRequest
最新推荐文章于 2024-10-16 13:35:29 发布