52,781
社区成员
发帖
与我相关
我的任务
分享
function verify(){
//var username = $("#username").val();
//极致精简代码
//$.get("AJAXServer?name="+$("#username").val(),null,function(data){
// $("#result").html(data);
//解决缓存问题
//解决乱码方法1: 页面端encodeURI 服务器端:String name = new String(name2.getBytes("ISO8859-1"),"utf-8");
// var url = "AJAXServer?name="+ encodeURI($("#username").val()); //encodeURI解决IE中文乱码
//解决乱码方法2 页面端 两次encodeURI 服务器端:
var url = "AJAXServer?name="+ encodeURI(encodeURI($("#username").val()));
url = convertURL(url);
$.get(url,null,function(data){
$("#result").html(data);
})
}
//给url地址加时间戳,骗过浏览器,不读缓存
function convertURL(url){
var timstamp = (new Date()).valueOf();
//把时间戳链接到url上
if(url.indexOf("?") >=0){
url = url + "&t="+timstamp;
}else{
url = url + "?t="+timstamp;
}
return url;
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ajax 用户校验以及解决IE缓存案例</title>
<script type="text/javascript" src="/jslib/jquery.js"></script>
<script type="text/javascript" src="/jslib/verify.js"></script>
</head>
<body>
<h1>ajax 用户校验以及解决IE缓存案例</h1>
<!--ajax 可以不使用表单就进行提交-->
<!--ajax 不使用name属性,而是使用ID属性-->
<div id="result" style="color:red"></div>
<input type="text" id="username"/>
<input type="button" value="校验" onclick="verify()"/>
<!--id 属性是为了使用dom技术找到一个节点,进行操作-->
</body>
</html>
//用户名校验
//使用XMLHTTPRequest对象进行异步数据交互
var xmlhttp;
function verify(){
// step-0
//使用dom方式获取文本框中的值
//document.getElementById("username")是dom获取一个节点的方法,一个元素就是html的一个节点
var userName = document.getElementById("username").value;
// step-1
//创建XMLHttpRequest对象,这一步最复杂,针对不同浏览器处理不同
if(window.XMLHttpRequest){
//针对firefox Mozilla opera IE7 IE8
xmlhttp = new XMLHttpRequest();
//针对某些Mozilla特定版本浏览器的bug
if(xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType("text/html");
}
}else if(window.ActiveXObject) {
//针对IE6 IE5.5 IE5
//两个用于创建XMLHTTpRequest对象的控件名称,放在js数组中
var activeNames = ["MSXML2.XMLHTTP","Micosoft.XMLHTTP"] ;
for(var i=0;i<activeNames.length;i++){
try{
//取出一个控件用于创建,如果创建成功就终止循环
//如果创建失败,回抛异常,然后继续循环 ,继续尝试创建
xmlhttp = new ActiveXObject(activeNames[i]);
break;
}catch(e){
//不做处理
}
}
}
//创建失败
if(!xmlhttp){
alert("xmlhttp对象创建失败!!");
}else{
//alert(xmlhttp.readyState);
alert("xmlhttp对象创建成功!!");
}
//step-2 注册回调函数
xmlhttp.onreadystatechange = callback;
//step-3 设置连接信息
//参数1 :表示请求的方式,支持http所有请求方式,主要使用get和post
//参数2 :请求的url
//参数3 :异步或同步传输,true表示异步
//xmlhttp.open("GET","AJAXServer?name="+userName,true);
//post方式请求的代码
xmlhttp.open("POST","AJAXServer",true);
//post方式需要自己设置请求头
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//step-4 发送数据,开始跟服务器端开始交互
//参数设置为null,因为要传递的数据已经在url中
//同步方式下,数据回来后send这句代码才算执行完
//异步方式下,send这句代码立即执行完
// xmlhttp.send(null);
//post方式发送数据
xmlhttp.send("name=" + userName);
}
//回调函数定义
function callback(){
//alert(xmlhttp.readyState);
//判断对象的状态是否完成
if(xmlhttp.readyState == 4){
//判断http的交互是否成功
if(xmlhttp.status == 200){
//获取服务器端返回的数据
//纯文本方式
var responseText = xmlhttp.responseText;
//将数据显示在页面
var divNode = document.getElementById("result");
//设置节点中html的内容
divNode.innerHTML = responseText;
}
}
}