无刷新技术登录
//html页面
<script type="text/javascript">
$(
function()
{
$("#btnOK").click(
function()
{
$.ajax({
url:"http://localhost:8080/WebClient20190722/T01", //相当于我们action
type:"POST", //相当于method
data:"username=" + $("#username").val() + "&password="+$("#password").val(), //传递的参数
//data选项既可以包含一个查询字符串,比如 key1=value1&key2=value2 ,也可以是一个映射,比如 {key1: 'value1', key2: 'value2'} 。如果使用了后者的形式,则数据再发送器会被转换成查询字符串。这个处理过程也可以通过设置processData选项为false来回避。
//data:{username:$("#username").val(),password:$("#password").val()},
success:function(data) //异步请求成功后,响应给客户端的数据
{
alert(data);
}
});
}
);
}
);
</script>
//servlet页面
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String msg = "登录失败";
if("admin".equals(username)&& "123456".equals(password)) {
msg="登陆成功";
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
PrintWriter out = response.getWriter();
out.print(msg);
out.close();
}
//练习代码2
//html
<!DOCTYPE html>
<html>
<head>
<title>T01.html</title>
<meta name="keywords" content="keyword1,keyword2,keyword3">
<meta name="description" content="this is my page">
<meta name="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/jquery-1.6.4.js"></script>
<script type="text/javascript">
$(
function()
{
$("#btnOK").click(
function()
{
$("#msg").ajaxStart(
function()
{
$("#msg").css("display","block");
$("#msg").html("正在登录中......");
}
);
$("#msg").ajaxComplete(
function()
{
$("#msg").css("display","none");
}
);
$.post("http://localhost:8080/WebClient20190722/T01",
{
username:$("#username").val(),
password:$("#password").val()
},
function(data) //异步请求成功后,响应给客户端的数据
{
alert(data);
}
);
}
);
}
);
</script>
</head>
<body>
用户名:<input type="text" name="username" id="username" />
密码:<input type="text" name="password" id="password" />
<br/>
<input type="button" name="btnOK" id="btnOK" value="Login" />
<div style="display: none;" id="msg"></div>
</body>
</html>
//servlet页面
String username = request.getParameter("username");
String password = request.getParameter("password");
String msg = "登录失败";
if( "admin".equals(username)
&& "123456".equals(password) )
{
msg = "登陆成功";
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print(msg);
out.flush();
out.close();
//练习三
<script type="text/javascript" src="js/jquery-1.6.4.js"></script>
<script type="text/javascript">
$(
function()
{
$("#btnOK").click(
function()
{
$.ajax({
url:"http://localhost:8080/WebClient20190722/T02", //相当于我们action
type:"POST", //相当于method
dataType:"json",
success:function(data) //异步请求成功后,响应给客户端的数据
{
//eval( "var obj = " + data );
for( var i = 0 ; i < data.length ; i++ )
{
var row = data[i];
$("div").append( "<span style='color:pink;'>" + row.sid +"..."+row.sname + "</span><br/>" );
}
}
});
}
);
}
);
</script>
回调函数
如果要处理$.ajax()得到的数据,则需要使用回调函数。beforeSend、error、dataFilter、success、complete。
- beforeSend 在发送请求之前调用,并且传入一个XMLHttpRequest作为参数。
- error 在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)
- dataFilter 在请求成功之后调用。传入返回的数据以及"dataType"参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。
- success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
- complete 当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串。