C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。
B/S(Browser/Server)结构即浏览器和服务器结构。

认识ajax 、XMLHttpRequest、使用jquery实现ajax、处理json格式的响应数据、使用原生态JavaScript实现ajax

一.杂记

1.传统web技术和ajax的请求方式不同 ajax是只获得需要的元素  传统刷新全部

2.ajax的全称是“Asynchronous Javascript And XML”(异步JavaScript和XML)

3.ajax的工作流程 用户界面通过JavaScript到ajax发送http请求---服务器(处理请求)

再返回xml/json/html数据到ajax引擎再由dom+css返回到用户界面

4.XMLHttpRequest提供异步发送请求能力

常用方法

open(String method,String url,boolean async)创建一个新的HTTP请求、

send(String data) 发送请求到服务器端、

setRequestHeader(String header,String value)设置请求的某个HTTP头信息、

5.老版本的IE浏览器和新版的即大部分浏览器的创建XMLHttpRequest不一样

6.事件onreadystatechange:回调函数

二.上机部分

1.实现检查注册用户的邮箱是否存在(使用原生态JavaScript实现ajax)

<div style="left: 2200px;">
<form action="" method="get">
注册邮箱:<input type="text" id="email" onblur="checkemail()" ><label id="samp">*</label><br/><br/>
&nbsp;用户名:<input type="text">*<br/><br/>
&nbsp;&nbsp;密码:<input type="password">*<br/><br/>
确认密码:<input type="password">*<br/><br/>
<div style="margin-left: 100px;"><input type="submit" value="注册"></div>

</form>
<script type="text/javascript" language="JavaScript">
function checkemail() {
//alert("hnjkl");
//创建XMLHttpRequest对象
if(window.XMLHttpRequest){//返回true时说明是新版本IE浏览器或其他浏览器
xmlHttpRequest=new XMLHttpRequest();
}else{//返回false时说明是老版本IE浏览器
xmlHttpRequest=new XMLHttpRequest("Microsoft.XMLHTTP");
}
//设置回调函数
xmlHttpRequest.onreadystatechange=callBack;
//获取用户名文本框的值
var email=$("#email").val();
//初始化XMLHttpRequest组件
var url="userServlet?email="+email;//服务器端URL地址,name为用户名文本框的值
xmlHttpRequest.open("GET",url,true);
//发送请求
xmlHttpRequest.send(null);
//回调函数callBack()中处理服务器响应的关键代码
function callBack(){
if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
var date=xmlHttpRequest.responseText;
if(date=="true"){
$("#samp").html("邮箱已被占用");//samp为显示消息的samp的id
}else{
$("#samp").html("邮箱可注册");
}
}
}
}

</script>
</div>

在servlet中代码如下

package web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class userServlet extends HttpServlet{

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub

request.setCharacterEncoding("UTF-8");
boolean emailCheck=false;
String email=request.getParameter("email");
if("22@qq.com".equals(email)){
emailCheck=true;

}
else {
emailCheck=false;
}
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
out.print(emailCheck);
out.flush();
out.close();

}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
this.doGet(request, response);
}
}

2.使用$.ajax()方法实现异步检查注册邮箱是否已存在

<div style="left: 2200px;">
<form action="" method="get">
注册邮箱:<input type="text" id="email" onblur="checkemail()" ><label id="samp">*</label><br/><br/>
&nbsp;用户名:<input type="text">*<br/><br/>
&nbsp;&nbsp;密码:<input type="password">*<br/><br/>
确认密码:<input type="password">*<br/><br/>
<div style="margin-left: 100px;"><input type="submit" value="注册"></div>

</form>
<script type="text/javascript" language="JavaScript">
function checkemail(){
var email=$("#email").val();
$.ajax({
"url" :"userServlet",
"type" :"get",
"data" :"email="+email,
"dataType" :"text",
"success" :callBack,
"error" :function () {
alert("出现错误");
}
});
function callBack(data) {
if(data=="true"){
$("#samp").html("邮箱已被占用");//samp为显示消息的samp的id
}else{
$("#samp").html("邮箱可注册");
}
}

}
</script>
</div>

3.以常见页面元素展示JSON数据

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'workthree.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var personary=["大东-河南省周口13838381438市-","小顺-广东省xx市"];
var person=[{"id":"1001","name":"大东","address":"河南省周口市","phone":"13838381438"},
{"id":"1002","name":"小圳","address":"湖南省xx市","phone":"13838381438"},
{"id":"1003","name":"小顺","address":"广东省xx市","phone":"13838381438"},
{"id":"1004","name":"小莫","address":"河北省xx市","phone":"13838381438"}];
var $divv=$("#con");
var $table=$(" <table border='1' ></table>").append("<tr><td>ID</td><td>姓名</td><td>住址</td><td>手机</td></tr>");
$divv.append($table);
$(person).each(function(){
$table.append("<tr><td>"+this.id+"</td><td>"
+this.name+"</td><td>"
+this.address+"</td><td>"
+this.phone+"</td></tr>");
});

//2.下拉框
var $ary=$(personary);
//var $ul=$("#arul");
var $sel=$("#arse");
$ary.each(function(i) {
$sel.append("<option value='"+(i+1)+"'>"+this+"</option>");
});
});
</script>

</head>

<body>

<div id="con">

</div>
<div id="conn">
<select id="arse"></select>
</div>
</body>
</html>

4.在ajax中使用JSON生成管理员新闻管理页面

//在这里页面就不上传了如有需要完整项目代码在csdn能找到 搜狗搜索 (accp8.0转换教材第X章)就能下载

//最主要的是js

/**
* Created by Administrator on 2017/7/4.
*/
$(function(){
$.ajax({
"url":"userServlet2",
"type":"POST",
"data":"por=user",
"dataType":"json",
"success":callBack
});
$("#news").click(function(){
initnews();
});
$("#topics").click(function(){
inittopics();
});
});

function callBack(data){
var $data=$(data);
var $userul=$("#userul");
$data.each(function(){
$userul.append("<li>"+this.naem+"&nbsp;&nbsp;"+this.pwd+"&nbsp;&nbsp;<a href=''>修改</a>&nbsp;&nbsp;<a href=''>删除</a></li>");
});
}
function initnews(){
$.ajax({
"url":"userServlet2",
"type":"POST",
"data":"por=news",
"dataType":"json",
"success":callNews
});

function callNews(news){
//alert("ddd");
var $userul=$("#userul").empty();
for(var i=0;i<news.length;){
$userul.append(
"<li>"+news[i].title+"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+news[i].author+"&nbsp;&nbsp;<a href=''>修改</a>&nbsp;&nbsp;<a href=''>删除</a></li>"
);
i++;
if(i==news.length){

break;
}
}

}
}
function inittopics(){
$.ajax({
"url":"userServlet2",
"type":"POST",
"data":"por=top",
"dataType":"json",
"success":callTopics
});

function callTopics(top){

var $userul=$("#userul").empty();
for(var i=0;i<top.length;){
//alert("ddd");
$userul.append(
"<li>"+top[i].topics+"&nbsp;&nbsp;<a href=''>修改</a>&nbsp;&nbsp;<a href=''>删除</a></li>"
);
i++;
if(i==top.length){

break;
}
}
}
}

//servlet代码

package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.newlist;
import dao.topdao;
import daoImpl.newlistimpl;
import daoImpl.topimpl;
import entity.news;
import entity.top;

public class userServlet2 extends HttpServlet{

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub

//doPost(request, response);

}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub

request.setCharacterEncoding("UTF-8");
String por=request.getParameter("por");
if(por.equals("news")){
newlist nd=new newlistimpl();
List<news> listnews=nd.allnewslist();
StringBuffer newssub=new StringBuffer("[");
for(int i=0;;){
news n=listnews.get(i);
newssub.append("{\"title\":\""+n.getNtitle()+"\",\"author\":\""+n.getAuthour()+"\"}");
i++;
if(i==listnews.size()){
break;
}else{
newssub.append(",");
}
}
newssub.append("]");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
out.print(newssub);
out.flush();
out.close();

}
else if(por.equals("top")){
topdao nd=new topimpl();
List<top> listtop=nd.alltop();
StringBuffer topsub=new StringBuffer("[");
for(int i=0;;){
top top=listtop.get(i);
topsub.append("{\"topics\":\""+top.getTcontent()+"\"}");
i++;
if(i==listtop.size()){
break;
}else{
topsub.append(",");
}
}
topsub.append("]");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
out.print(topsub);
out.flush();
out.close();
}
}
}

5.在ajax中使用JSON生成主题管理页面

//在上机四中

五.总结部分

1.传统的web开发技术通过浏览器发送请求 而ajax通过JavaScript的xmlhttprequest对象发送

传统的响应的是一个完整页面  而JavaScript返回需要的数据

2.Ajax 的关键元素

→JavaScript语言:Ajax技术的主要开发语言

→XML/JSON/HTML:用来封装数据

→DOM(文档对象模型):修改页面元素

→CSS:改变样式

→Ajax引擎:即XMLHttpRequest对象

3.创建XMLHttpRequest对象的方式(两种新的和旧的)

欢迎提问,欢迎指错,欢迎讨论学习信息 有需要的私聊 发布评论即可 都能回复的

原文在博客园http://www.cnblogs.com/a782126844/有需要可以联系扣扣:2265682997

accp8.0转换教材第10章Ajax和jQuery理解与练习的更多相关文章

  1. accp8.0转换教材第11章JAjax加护扩展理解与练习

    ①杂记:前面有原生态JavaScript实现ajax这里又多了更简单的方法实现ajax ②$.get()方法的常用参数 参数 类型 说明 url String 必选,规定发送地址 data Plain ...

  2. accp8.0转换教材第1章多线程理解与练习

    一.单词部分: ①process进程 ②current当前的③thread线程④runnable可获取的 ⑤interrupt中断⑥join加入⑦yield产生⑧synchronize同时发生 二.预 ...

  3. accp8.0转换教材第9章JQuery相关知识理解与练习

    自定义动画 一.单词部分: ①animate动画②remove移除③validity有效性 ④required匹配⑤pattern模式 二.预习部分 1.简述JavaScript事件和jquery事件 ...

  4. accp8.0转换教材第6章连接MySQL理解与练习

    JDBC_ODBC,纯java方式连接mysql 1.单词部分 ①JDBCjava连接数据库②driver manager驱动③connection连接④statement声明 ⑤execute执行⑥ ...

  5. accp8.0转换教材第4章MySQL高级查询(二)理解与练习

    知识点:EXISTS子查询.NOT EXISTS子查询.分页查询.UNION联合查询 一.单词部分 ①exist存在②temp临时的③district区域 ④content内容⑤temporary暂时 ...

  6. accp8.0转换教材第3章MySQL高级查询(一)理解与练习

    一.单词部分 ①constraint约束②foreign外键③references参考 ④subquery子查询⑤inner内部的⑥join连接 二.预习部分 1.修改表SQL语句的关键字是什么 RE ...

  7. accp8.0转换教材第8章JavaScript对象及初识面向对象理解与练习

    JavaScript数据类型,对象,构造函数,原型对象,初识原型链,对象继承 一.单词部分 ①object父类②constructor构造函数③instance实例④call调用 ⑤apply应用⑥c ...

  8. accp8.0转换教材第7章JavaScript操作DOM对象理解与练习

    程序调试,chrome开发人员工具,DOM操作,节点和节点间的关系,节点信息,操作节点,获取元素 一.单词部分 ①alert警告②prompt提示③parentNode父节点④childNode子节点 ...

  9. accp8.0转换教材第5章事务、视图、索引、备份和恢复理解与练习

    知识点:事务.视图.索引.数据库的备份和恢复 一.单词部分 ①transation事务②atomicity原子性③consistency一致性④isolation隔离性 ⑤durability持久性⑥ ...

随机推荐

  1. 自研框架wap.js实践

    示例 使用分为3个步骤: 1, 配置模板渲染中心,方便别人可以看到你的模板渲染,请求是什么关系,复杂度怎样 2, 配置事件分发中心  方便观察事件分发,事件复杂度 3,写对应的请求方法.渲染方法.   ...

  2. 错误处理1: D:\a1-C++\C++作业\第五次1.cpp undefined reference to `vtable for Shape'

    在编译程序的时候遇到此误,在google上查,很多地方都说是因为虚基类里面的虚拟析构函数没有提供实现导致的.但是我的已经提供了实现,也不行.最后发现是其他没有提供实现的虚函数造成的.所以,在一个虚基类 ...

  3. 【JAVAWEB学习笔记】网上商城实战2:异步加载分类、Redis缓存分类和显示商品

    网上商城实战2 今日任务 完成分类模块的功能 完成商品模块的功能 1.1      分类模块的功能: 1.1.1    查询分类的功能: 1.1.2    查询分类的代码实现: 1.1.2.1  创建 ...

  4. Vue单页式应用(Hash模式下)实现微信分享

    前端微信分享的基本步骤: 一.绑定域名: 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名".这个不多说,微信开发 ...

  5. Java中的向上造型和向下造型等

    package com.study.oop.day01; /**  * 如果某个方法是静态 的,它的行为就不具有多态性  * @author LuHongGang  * @date 2017年6月5日 ...

  6. 一步一步实现android studio代码上传到github。

    本文只注重代码上传能成功就好,不解释什么是git什么事github,git有什么优势. 1,先创建一个android应用, 第二步:创建github账户 和 安装git.网上的文章多如牛毛.唯一要说的 ...

  7. 【小练习06】HTML+CSS--电影公告

    要求实现如下效果图: 代码演示 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  8. 网络编程应用:基于UDP协议【实现文件下载】--练习

    要求: 基于UDP协议实现文件下载 发送方–请求–接收方发送文件–发送方接收文件 代码: 发送方: package Homework1; import java.io.File; import jav ...

  9. 使用React改版网站后的一些感想

    文章转载:http://www.jianshu.com/p/8f74cfb146f7 网站是毕业设计的作品,开发这个网站的目的主要用于记录一些笔记,以及聚合一些资讯信息,也算自己在网络世界中的一块静地 ...

  10. canvas实现视频截图

    截取视频当前播放画面,直接上源码. <body> <div class="container"> <video id="test" ...