1.后台处理程序

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String username = request.getParameter("username");
String password = request.getParameter("password"); System.out.println(username+"=========="+password); out.print("响应内容-->姓名:" +username+",密码:"+password);
%>

2.get方式请求

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ajax实现前后台交互</title>
</head>
<body>
<form action="#" method="">
<input type="text" name="username" id="username" />
<input type="password" name="password" id="password" />
<input type="button" value="ajax登录" onclick="tzLogin();" />
</form> <div id="result"></div>
<script type="text/javascript"> function tzLogin(){
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var params = "?username="+username+"&password="+password+"&method=get"; //创建一个Ajax对象
var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200){
document.getElementById("result").innerText = this.responseText;
} };
//true代表异步
xhr.open("get","login.jsp"+params,true);
xhr.send();
}
</script>
</body>
</html>

3.post方式请求

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ajax实现前后台交互</title>
</head>
<body>
<form action="#" method="">
<input type="text" name="username" id="username" />
<input type="password" name="password" id="password" />
<input type="button" value="ajax登录" onclick="tzLogin();" />
</form> <div id="result"></div>
<script type="text/javascript"> function tzLogin(){
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var params = "username="+username+"&password="+password+"&method=post"; //创建一个Ajax对象
var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200){
document.getElementById("result").innerText = this.responseText;
} };
xhr.open("post","login.jsp",true);
//发送数据,如果请求方式是post话send一定要设置参数
//如果get xhr.send(); 如果post send一定要设置参数
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(params);
}
</script>
</body>
</html>

4.模拟jQuery封装Ajax请求

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ajax实现前后台交互</title>
</head>
<body>
<form action="#" method="">
<input type="text" name="username" id="username" />
<input type="password" name="password" id="password" />
<input type="button" id="button" value="ajax登录" onclick="tzLogin();" />
</form> <div id="result"></div>
<script type="text/javascript">
var $ = {
ajax : function(opts){
//创建一个Ajax对象
var xhr = null; if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
var ids = ["MSXML2.XMLHTTP.3.0","Microsoft.XMLHTTP","MSXML2.XMLHTTP"];
for(var i=0;i<ids.length;i++){
try{
xhr = new ActiveXObject(ids[i]);
break;
}catch(e){ }
}
} xhr.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200){
var text = this.responseText;
if(opts.success) opts.success.call(this,text);
}else{
if(opts.error) opts.error.call(this,"调用有异常");
}
}; var params = "";
for(var k in opts.data){
if(params != "") {
params += "&";
}
params += (k+"="+opts.data[k]);
}
//true代表异步
if(opts.type.toLowerCase() == "get"){
var url = opts.url;
if(params != ""){
url = opts.url+"?"+params;
}
xhr.open("get",url,opts.async);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.send();
}else if(opts.type.toLowerCase() == "post"){
xhr.open("post",opts.url,opts.async);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.send(params);
}
} }; function tzLogin(){ $.ajax({
type: "post",
url: "login.jsp",
data: {
username:document.getElementById("username"),
password:document.getElementById("password")
},
dataType: "json",
async : true,
success: function(data){
document.getElementById("result").innerText = data;
},
error:function(){
document.getElementById("result").innerText = "调用有异常";
}
}); }
</script>
</body>
</html>

5.说明解析

ajax XMLHttpRequest
1.AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
XML HttpRequest http请求的一种,传输的数据格式在早期常用XML

它是构建HTTP请求的javascript对象,在早期它是
ActiveX对象形式存在,服务器端和客户端传递异步的问题
早期数据的传递:字符串和XML
实际上,Ajax就是javascript和XML直接建立的一种异步传输的过程

2.创建 XMLHttpRequest 对象
创建 XMLHttpRequest 对象的语法:var xhr = new XMLHttpRequest();
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:
var xhr = new ActiveXObject("Microsoft.XMLHTTP");

3.ajax 只不过是另一种Http请求的而已,它和form表单原理是一样的,
只不过不会刷新页面进行的一种异步交互

4.请求方式 get\post
get基于浏览器请求
1.直接在浏览器输入框输入一个地址进行请求
2.点击a链接是一个get请求
3.通过form指明method="get"
4.ajax指明请求方式get

post:form里面method="post"

5.请求的状态和响应异常
请求的状态,readyState
0:未初始化状态
1:载入请求的状态
2:载入完成状态
3:请求交互状态
4:请求完成状态s

可以捕获服务器错误
500服务器连接失败 -- 服务器关闭
404代表页面找不到
405请求方式有问题
200 代表交互成功,正确请求和响应
ajax里面指明post请求

ajx技术解析以及模拟jQuery封装的更多相关文章

  1. js框架封装,模拟jQuery封装

    模拟jQuery框架,利用原生的js技术,封装一个js框架,以加深对jQuery的常用api的使用和面向对象原理的理解:一:结构部分首先利用闭包,构造一个自执行函数,然后利用选择器函数Sizzle,获 ...

  2. 模拟jquery封装选择器

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. javascript模拟jQuery封装委托事件,兼容IE

    var $ = function(id){ var dom = document.getElementById(id); return { on:function(eventType,element, ...

  4. 模拟jQuery简单封装ajax

    /*模拟jQuery的写法 (简单写法)*/ var $={}; /*ajax*/ $.ajax = function (options) { /* * 请求 * 1.请求接口 type get po ...

  5. 如何用jQuery封装插件

    引子 现在网上关于js和jquery封装的插件很多,我刚刚接触前端的时候,就很敬佩那些自己写插件的大牛们!因为是他们给网站开发更多的便利,很多网页效果,网上很多现成的插件!那么这些插件是如何写的呢?首 ...

  6. 模拟jQuery库

    用js模拟jQuery方法,体会封装思想 <!DOCTYPE html><html><head><meta charset="UTF-8" ...

  7. 仿照jquery封装一个自己的js库(一)

    所谓造轮子的好处就是复习知识点,加深对原版jquery的理解. 本文系笔者学习jquery的笔记,记述一个名为"dQuery"的初级版和缩水版jquery库的实现.主要涉及知识点包 ...

  8. 学习PHP爬虫--《Webbots、Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)》

    <Webbots.Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)> 译者序 前言 第一部分 基础概念和技术 第1章 本书主要内容3 1.1 发现互联网的真 ...

  9. 干货|爱奇艺CDN巡检系统技术解析

    小结: 1. 中心处理系统 /1/将定制后的巡检任务拆分,通过配置与任务分发系统.CMDB*( configuration management database)将派发到边缘拨测系统/2/处理边缘拨 ...

随机推荐

  1. getTickCount()函数 VS GetTickCount()函数

    这俩函数看上去长得太像了,笔者曾经马大哈地把两者当成一个函数了(确实长得很像),知道有一天发现返回的值离预期值差很远差仔细查了下. 1. getTickCount() 实际上,该函数为opencv中的 ...

  2. 对android录制的NV21视频数据进行旋转(90,180,270)与剪切

    android默认的视频采集格式是NV21,(属于YUV420) 在onPreviewFrame中传进来的byte[] data即为NV21格式. 旋转算法 对NV21进行顺时针旋转90度,180度和 ...

  3. Linux定时,计划任务cron

    假如你有一些任务要定期执行,比如清理磁盘.删除过期文件.发送邮件和提醒,这个时候可以用cron来实现. crond是后台进程,而crontab则是定制好的计划任务表. 启动与停止 查看状态/sbin/ ...

  4. poj 2774 Long Long Message 后缀数组基础题

    Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 24756   Accepted: 10130 Case Time Limi ...

  5. 原生Ajax写法(GET)

    ajax的GET提交方式的原生代码: var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else if(w ...

  6. Codeforces 687C The Values You Can Make(DP)

    题目大概说给n个各有价值的硬币,要从它们中选出若干个组合成面值k,而要求的是各个方案里这些选出的硬币能组合出来的面值有哪些. 有点绕.. dp[i][j][k]表示前i个硬币中 能否 组合成面值j且选 ...

  7. URAL1018 Binary Apple Tree(树形DP)

    题目大概说一棵n结点二叉苹果树,n-1个分支,每个分支各有苹果,1是根,要删掉若干个分支,保留q个分支,问最多能保留几个苹果. 挺简单的树形DP,因为是二叉树,都不需要树上背包什么的. dp[u][k ...

  8. How to retrieve instance parameters from an uninstantiated (uninserted) family

    The trick to be able to read the default values for instance parameters is to get to the FamilyManag ...

  9. BZOJ4118 : [Wf2015]Window Manager

    OPEN.CLOSE.RESIZE操作直接模拟即可. 对于MOVE,设$f_i$表示$i$号矩形的坐标,先无视边界通过DP求出每个矩形的坐标,再根据边界反向用第二次DP求出被移动矩形移动的真实距离,再 ...

  10. 20145304 Java第三周学习报告

    20145304 <Java程序设计>第三周学习总结 教材学习内容总结 1.定义类: 类定义时使用class关键词,建立实例要使用new关键词. 代码如下: /*定义类 书上例子 衣服的型 ...