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. css判断不同分辨率显示不同宽度布局实现自适应宽度

    一.CSS DIV网页布局中当分辨率小于等于1024px(像素)时,DIV布局对象显示1000px宽度,当分辨率大于1024px时候显示1200px宽度等需求.使用CSS实现改变浏览器显示宽度从而实现 ...

  2. Objective-C 代码块(block)的使用

    代码块本质上是和其他变量类似.不同的是,代码块存储的数据是一个函数体.使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值. 脱字符(^)是块的语法标记.按照我们熟悉的参数语法规约所定 ...

  3. idea生成JAVADOC 报java.lang.IllegalArgumentException解决方案[终极]

    idea生成javadoc文档,总是会报  java.lang.IllegalArgumentException     at sun.net.www.ParseUtil.decode(ParseUt ...

  4. java JDBC操作MySQL数据库

    一,首先在MYSQL建立一个数据库,例如Geek99DB: create database Geek99DB; use Geek99DB; 然后建立一个表CustomerTab: create tab ...

  5. IIS7.5应用程序池集成模式和经典模式的区别介绍

    IIS7.5应用程序池集成模式和经典模式的区别介绍 作者:  字体:[增加 减小] 类型:转载 时间:2012-08-07   由于最近公司服务器上需要将iis的应用程序池全部都升级到4.0的框架,当 ...

  6. 关于如何在Visual Studio上仿真调试安卓的U3D应用

    正巧最近需要开发一个安卓手机上的Unity3D游戏功能,想着既然要开发么,当然需要调试.本来的话一些基础功能是不需要使用仿真模拟器,直接在U3D的开发编辑器上就能调试,不过有一些安卓上才能执行,比如 ...

  7. jenkins使用开始踩坑(1)

    上篇文章 安装教程 :https://www.cnblogs.com/linuxchao/p/linuxchao-jenkins-setup.html 一.前戏 话说上一篇文章安装完 JDK 和 je ...

  8. mysql varchar integer

    MySQL 中将 varchar 字段转换成数字进行排序 - MySQL - 大象笔记 https://www.sunzhongwei.com/order-by-varchar-field-which ...

  9. oracle获取过去两年的今天时间

    获取过去两年的今天时间: SELECT last_day(ADD_MONTHS(ADD_MONTHS(sysdate,-12), ROWNUM - 1)) as monthlist FROM DUAL ...

  10. shiro默认过滤器