ajx技术解析以及模拟jQuery封装

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方式请求

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Ajax实现前后台交互</title>
 8 </head>
 9 <body>
10     <form action="#" method="">
11         <input type="text" name="username" id="username" />
12         <input type="password" name="password" id="password" />
13         <input type="button" value="ajax登录" onclick="tzLogin();" />
14     </form>
15
16     <div id="result"></div>
17     <script type="text/javascript">
18
19         function tzLogin(){
20             var username = document.getElementById("username").value;
21             var password = document.getElementById("password").value;
22             var params = "?username="+username+"&password="+password+"&method=get";
23
24             //创建一个Ajax对象
25             var xhr = new XMLHttpRequest();
26
27
28             xhr.onreadystatechange = function(){
29                 if(this.readyState == 4 && this.status == 200){
30                     document.getElementById("result").innerText = this.responseText;
31                 }
32
33             };
34             //true代表异步
35             xhr.open("get","login.jsp"+params,true);
36             xhr.send();
37         }
38     </script>
39 </body>
40 </html>

3.post方式请求

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Ajax实现前后台交互</title>
 8 </head>
 9 <body>
10     <form action="#" method="">
11         <input type="text" name="username" id="username" />
12         <input type="password" name="password" id="password" />
13         <input type="button" value="ajax登录" onclick="tzLogin();" />
14     </form>
15
16     <div id="result"></div>
17     <script type="text/javascript">
18
19
20         function tzLogin(){
21             var username = document.getElementById("username").value;
22             var password = document.getElementById("password").value;
23             var params = "username="+username+"&password="+password+"&method=post";
24
25             //创建一个Ajax对象
26             var xhr = new XMLHttpRequest();
27
28             xhr.onreadystatechange = function(){
29                 if(this.readyState == 4 && this.status == 200){
30                     document.getElementById("result").innerText = this.responseText;
31                 }
32
33             };
34             xhr.open("post","login.jsp",true);
35             //发送数据,如果请求方式是post话send一定要设置参数
36             //如果get  xhr.send();  如果post send一定要设置参数
37             xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
38             xhr.send(params);
39         }
40     </script>
41 </body>
42 </html>

4.模拟jQuery封装Ajax请求

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html>
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Ajax实现前后台交互</title>
 8 </head>
 9 <body>
10     <form action="#" method="">
11         <input type="text" name="username" id="username" />
12         <input type="password" name="password" id="password" />
13         <input type="button" id="button" value="ajax登录" onclick="tzLogin();" />
14     </form>
15
16     <div id="result"></div>
17     <script type="text/javascript">
18         var $ = {
19                 ajax : function(opts){
20                     //创建一个Ajax对象
21                     var xhr = null;
22
23                     if(window.XMLHttpRequest){
24                         xhr = new XMLHttpRequest();
25                     }else{
26                         var ids = ["MSXML2.XMLHTTP.3.0","Microsoft.XMLHTTP","MSXML2.XMLHTTP"];
27                         for(var i=0;i<ids.length;i++){
28                             try{
29                                 xhr = new ActiveXObject(ids[i]);
30                                 break;
31                             }catch(e){
32
33                             }
34                         }
35                     }
36
37
38                     xhr.onreadystatechange = function(){
39                         if(this.readyState == 4 && this.status == 200){
40                             var text = this.responseText;
41                             if(opts.success) opts.success.call(this,text);
42                         }else{
43                             if(opts.error) opts.error.call(this,"调用有异常");
44                         }
45                     };
46
47                     var params = "";
48                     for(var k in opts.data){
49                         if(params != "") {
50                             params += "&";
51                         }
52                         params += (k+"="+opts.data[k]);
53                     }
54                     //true代表异步
55                     if(opts.type.toLowerCase() == "get"){
56                         var url = opts.url;
57                         if(params != ""){
58                             url = opts.url+"?"+params;
59                         }
60                         xhr.open("get",url,opts.async);
61                         xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
62                         xhr.send();
63                     }else if(opts.type.toLowerCase() == "post"){
64                         xhr.open("post",opts.url,opts.async);
65                         xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
66                         xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
67                         xhr.send(params);
68                     }
69                 }
70
71         };
72
73
74
75
76         function tzLogin(){
77
78             $.ajax({
79                 type: "post",
80                 url: "login.jsp",
81                 data: {
82                     username:document.getElementById("username"),
83                     password:document.getElementById("password")
84                 },
85                 dataType: "json",
86                 async : true,
87                 success: function(data){
88                        document.getElementById("result").innerText = data;
89                 },
90                 error:function(){
91                        document.getElementById("result").innerText = "调用有异常";
92                 }
93             });
94
95         }
96     </script>
97 </body>
98 </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请求

时间: 2024-10-28 22:22:32

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

原生JS模拟JQuery封装Ajax

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

js框架封装,模拟jQuery封装

模拟jQuery框架,利用原生的js技术,封装一个js框架,以加深对jQuery的常用api的使用和面向对象原理的理解:一:结构部分首先利用闭包,构造一个自执行函数,然后利用选择器函数Sizzle,获取dom元素:其后设置入口函数jQuery,返回一个F的实例:然后对jQuery.prototype进行设置:其后修改F的原型指向jQuery的原型,最后暴露出去两个接口$和jQuery:二:jQuery.fn.extend = jQuery.extend = function(){}通过向jQue

模拟jquery封装简单的Select搜索

var Select=(function () { //自定义 select 方法的思路: //1> 定义一个 support 对象. 将需要使用的方法进行处理, 得到方法的能力 //2> 需要使用的可能有兼容性的方法, 定义一个可以完成该方法的函数来替代. 在函数内部进行兼容处理 //3> 定义 select 函数. 首先看是否支持 qsa, 如果支持直接使用. 如果不支持自己再来实现 //native code判断是否是内置方法 var rnative=/\[native code\

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

1 var $ = function(id){ 2 var dom = document.getElementById(id); 3 return { 4 on:function(eventType,element,callback){ 5 if(document.addEventListener){ 6 dom.addEventListener(eventType,function(e){ 7 var ev = e || window.event; 8 var target = ev.targ

模拟jQuery简单封装ajax

1 /*模拟jQuery的写法 (简单写法)*/ 2 var $={}; 3 /*ajax*/ 4 $.ajax = function (options) { 5 /* 6 * 请求 7 * 1.请求接口 type get post 默认的是get 决定是否设置请求头 8 * 2.接口地址 url 不确定 字符串 如果用户没有传 默认的接口地址为当前路径 9 * 3.是否是异步 async 默认的就是异步 true;false 是同步请求 10 * 4.提交数据 data 默认的是对象 {nam

STM32F413/423/446芯片解密单片机破解技术解析!

STM32F413/423/446芯片解密单片机破解技术解析! 深圳凯基迪科技,专业承接各种高难度加密芯片,现承诺STM32F413解密STM32F423解密STM32F446芯片解密单片机破解100%包成功!如有需要欢迎咨询:132-6677-8242 , QQ:528621124 STM32F413/423 Cortex-M4入门级高性能微控制器: STM32F413/423微控制器为高性能STM32F4系列单片机的入门级产品,实现了运行模式下的动态功耗和处理器性能之间的最佳平衡,即使在3.

二.jQuery源码解析之构建jQuery之构建函数jQuery的7种用法

一:$(selectorStr[,限制范围]),接受一个选择器(符合jQuery规范的字符串),返回一个jQuery对象;二:$(htmlStr[,文档对象]),$(html[,json对象])传入html字符串,创建一个新的dom元素 三:$(dom元素),$(dom元素集合)将dom元素转换成jQuery对象.四:$(自定义对象)封装普通对象为jQuery对象.五:$(回调函数)绑定ready事件监听函数,当Dom加载完成时执行.六:$(jQuery对象)接受一个jQuery对象,返回一个j

VXLAN 技术解析-(1)VXLAN简述

VXLAN 技术解析-(1)VXLAN简述 VXLAN简述 VXLAN,Virtual Extensible LAN,顾名思义,是VLAN的扩展版本.VXLAN技术主要用来增强在云计算环境下网络的扩展能力. VXLAN使用UDP报文将Ethernet报文封装起来,从而实现跨IP的数据传输,其使用的UDP端口号为4789.VXLAN的端设备称为VTEP,VXLAN tunnel endpoint,一般由物理交换机(Nexus 5600/9000)或虚拟交换机(Open vSwitch/Nexus

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

<Webbots.Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)> 译者序 前言 第一部分 基础概念和技术 第1章 本书主要内容3 1.1 发现互联网的真正潜力3 1.2 对开发者来说3 1.2.1 网络机器人开发者是紧缺人才4 1.2.2 编写网络机器人是有趣的4 1.2.3 网络机器人利用了“建设性黑客”技术4 1.3 对企业管理者来说5 1.3.1 为业务定制互联网5 1.3.2 充分利用公众对网络机器人的经验不足5 1.3.3 事半功倍6 1.4 结论