function creatXmlHttpRequest()
{
if (typeof XMLHttpRequest != 'undefined')
{
return new XMLHttpRequest();
}
else if (typeof ActiveXObject != 'undefined')
{
var MSXML = ['MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0',
'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP',
'Microsoft.XMLHTTP'];
for (var i = 0; MSXML.length; i ++)
{
try{
return new ActiveXObject(version[i]);
}catch (e)
{
//.......
}
}
}
else
{
throw new Error('您的系统或浏览器不支持XHR对象!');
}
}
GET方式回传json
function checkUserByAjaxGet()
{
// 第一步,得到一个XMLHttpRequest对象
// var xhr=new XMLHttpRequest();
// 如果说IE6,就需要使用Active组建
// xmlhttp=new ActiveXObject(MSXML[n]);
var xhr = creatXmlHttpRequest();
var name = document.rgform.username.value;
// 设置一个事件的监听函数
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4)
{
if (xhr.status == 200 || xhr.status == 304)
{
var ret = xhr.responseText;
var _ret = eval('(' + ret + ')');
// var _ret = JSON.parse(ret);
document.getElementById("msg").innerHTML = _ret.tip;
if (_ret.success = true)
{
document.rgform.username.focus();
}
}
}
}
// 第二步,准备一个连接请求
xhr.open("get", "checkuserByJSON.jsp?name=" + name, true);
// 第三步,发起请求
xhr.send(null);
}
POST方式回传json
function checkUserByAjaxPost()
{
// 第一步,创建xhr对象
var xhr = creatXmlHttpRequest();
var name = document.rgform.username.value;
// 第二步,设置一个事件的监听函数
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4)
{
if (xhr.status == 200 || xhr.status == 304)
{
var ret = xhr.responseText;
var _ret = eval('(' + ret + ')');
// var _ret = JSON.parse(ret);
document.getElementById("msg").innerHTML = _ret.tip;
if (_ret.success = true)
{
document.rgform.username.focus();
alert(xhr.getResponseHeader("Content-Length"));
alert(xhr.getResponseHeader("Content-Type"));
alert(xhr.getResponseHeader("Date"));
alert(xhr.getResponseHeader("Server"));
}
}
}
}
// 第三步,准备一个POST连接请求
xhr.open("post", "checkuserByJSON.jsp", true);
// 使用post方式提交,必须要加上如下一行
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
// 第四步,发起请求
xhr.send("name=" + name + "&password=ppppp");
}
POST方式回传xml
function checkUserByAjaxPostXml() {
// 第一步,创建xhr对象
var xhr = creatXmlHttpRequest();
var name = document.rgform.username.value;
// 第二步,设置一个事件的监听函数
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4)
{
if (xhr.status == 200 || xhr.status == 304)
{
var ret = xhr.responseXML;
var successNode = ret.getElementsByTagName("success")[0];
var tipNode = ret.getElementsByTagName("tip")[0];
document.getElementById("msg").innerHTML = tipNode.firstChild.nodeValue;
if (successNode.firstChild.nodeValue == true)
{
document.rgform.username.focus();
}
}
}
}
// 第三步,准备一个POST连接请求
xhr.open("post", "checkuserByXML.jsp", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
// 第四步,发起请求
xhr.send("name=" + name + "&password=ppppp");
}
返回的的json
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="java.util.*" %>
<%
String username = request.getParameter("username");
response.setContentType("application/json;charset=UTF-8");
response.setHeader("pragma","no-cache");
response.setHeader("cache-control","no-cache");
if("admin".equals(username))
{
response.getWriter().write("{\"success\":"+true+",\"tip\":\"用户名已存在\"}");
}
else
{
response.getWriter().write("{\"success\":"+false+",\"tip\":\"用户名可以使用\"}");
}
%>
返回的xml
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="java.util.*" %>
<%
String userId = request.getParameter("name");
response.setContentType("application/xml;charset=UTF-8");
response.setHeader("pragma","no-cache");
response.setHeader("cache-control","no-cache");
if("admin".equals(userId))
{
response.getWriter().write("<root><success>true</success><tip>用户名已存在</tip></root>");
}
else
{
response.getWriter().write("<root><success>false</success><tip>用户名可以使用</tip></root>");
}
%>
界面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>register.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/register.js"></script>
<script type="text/javascript" src="js/jquery-1.5.2.js"></script>
<style type="text/css">
#round {
padding:10px; width:300px; height:150px;
border:1px solid #000;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius:10px;
margin:10px auto;
}
#round div.user, #round div.pass {
font-size:14px;
color:#666;
padding:15px 0;
text-align:center;
position: relative;
}
#round span{
position: absolute;
color:red;
top:35px;
left:100px;
}
#round input.text {
width:200px;
height:25px;
border:1px solid #ccc;
background:#fff;
font-size:14px;
}
#round .button {
padding:5px 0;
text-align:center;
}
</style>
</head>
<body>
<div>
<form method="post" action="" >
<div>
用户名:<input type="text" onchange="事件调用的方法">
<span></span>
</div>
<div>
密 码:<input type="password">
</div>
<div><input type="button" value="提交"/></div>
</form>
</div>
</body>
</html>
效果图