Ajax最实用的小例子集合

article/2025/10/6 7:47:39

今天我为大家带来了几个非常实用的ajax小例子,都是在工程中经常用到的实用的例子。适合有基础的同学,废话也不多说了,看代码

  哦,对了,所有的例子都是用servlet+jsp实现的 至于三大框架的,我相信,只要这个会了,那都不是事...大笑

1、我们先用基本的ajax实现验证用户名是否存在的例子(此例子只对IE浏览器),

例子截图


jsp的代码

<%@ 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>
<script type="text/javascript">
var xmlhttp;
//创建XMLHttpRequest对象
function createXMLHttpRequest() {try {//针对IE5、IE5.5、IE6xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try {//针对IE5、IE5.5、IE6xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {try {//针对FireFox、Mozillar、Opera、Safari、IE7、IE8xmhttp = new XMLHttpRequest();//创建XMLHttpRequest对象if (xmlhttp.overrideMimeType) {//修正某些浏览器的BUGxmlhttp.overrideMimeType("text/xml");}} catch (e) {}}}
}function ajaxsub(t) {//创建一个XmlHttpRequest对象(js内置对象)createXMLHttpRequest();if (xmlhttp != null) {//确定XMLHttpRequest是否创建成功var url = "AjaxServlet";//1.是http请求的方式  POST和GET//2.是服务器的地址,可以一个servlet//3.是采用同步还是异步,true为异步xmlhttp.open("POST", url, true);//post请求要自己设置请求头  注意顺序xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");xmlhttp.onreadystatechange = callfun; //注册回调函数  callfun对应一个js的函数名字,这个函数由我们自己定义//发送请求xmlhttp.send("on=check&name=" + t.value + "&id=10");} else {alert("不能创建XMLHttpRequest对象实例")}}//回调函数
function callfun() {//获取服务器返回的数据//回调函数里面会执行多次,次数取决建立连接的时间和建立连接成功之后服务器处理的时间//获取与服务器建立连接是否成功if (xmlhttp.readyState == 4) {if (xmlhttp.status == 200) {//服务器已经成功处理请求,并返回数据var serviceData = xmlhttp.responseText;//获取服务器返回的文本数据//alert("服务器返回的数据是:" + serviceData);var vs = "";if (serviceData == "1") {vs = "不可以注册";} else {vs = "可以注册";}document.getElementById("msg_info").innerHTML = vs;}}}
</script>
</head>
<body>
用户名:<input type="text" name="username" οnblur="ajaxsub(this)"><label id="msg_info"></label>
</body>
</html>
servlet代码

String name=request.getParameter("name");response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter();//获取数据库的数据String sql="select * from users where username='"+name+"'";System.out.println(sql);try {ResultSet rs=DBUtil.getConn().createStatement().executeQuery(sql);
                        //判断是否存在
			if(rs.next()){out.print(1);}else{out.print(0);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}out.flush();out.close();

从上面的例子我们看得出原生的ajax对浏览器的兼容问题及其不好,于是jquery就为我们提供了非常方便的ajax异步得到数据的方法。
从下面的例子开始我们就用jquery提供的方法写

2、省市级联动

效果

我们可以用火狐的开发者模式看到要异步加载的数据


首先我们先引用jquery
<script type="text/javascript" src="js/jquery-1.11.1.js"></script>

jsp

省/直辖市
<select name="pri" id="pri">
<option>--请选择--</option>
<option value="bj">北京</option>
<option value="hn">河南</option>
<option value="hb">湖北</option>
<option value="sx">山西</option>
</select>
市/区
<select id="city" name="city">
</select>
<script type="text/javascript">
$("#pri").change(function(){
        //获取你点击的省
	var pri=$(this).val();
        //得到你异步加载的servletvar url="AjaxServlet?on=city";
       //异步加载数据$.post(url,{pri:pri},function(data){$("#city").empty();var city=data.split(",");for(var i=0;i<city.length;i++){$("#city").append("<option value='"+city[i]+"'>"+city[i]+"</option>");}});
});
</script>
servlet代码

	     String pri=request.getParameter("pri");response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter();//模拟数据库的数据Map<String, String> map=new HashMap<String,String>();map.put("bj", "朝阳区,昌平区,海淀区,丰台区");map.put("hn", "郑州,开封,洛阳,荥阳");map.put("hb", "武汉,湖北1,湖北2,湖北3");map.put("sx", "大同,宝鸡,山西1,山西2");//写进输出流out.print(map.get(pri));out.flush();out.close();

3、模仿百度查询提示



jsp代码

<div class="search">
<input type="text" name="title" id="searchtitle"/>
<input type="button" value="搜索" id="searchsub"/>
<div id="result">
</div>
</div

<script type="text/javascript">
$(function(){$("#searchtitle").keyup(function(){$("#result").css("display","none");//隐藏结果提示var title=$(this).val();//获取查询的内容setTimeout(function(){var url="AjaxServlet?on=tips";//异步加载servlet$.post(url,{title:title},function(data){$("#result").empty();//清除查询内容//判断结果是否是空if(data.length!=0){var arr=data.split(",");//截取字符串for(var i=0;i<arr.length;i++){$("#result").append("<div class='tips'>"+arr[i]+"</div>");}//结果提示//$("#result").css("display","block");$("#result").fadeIn("slow");//淡入slow,fast,淡出fadeOut//点击tip添加到输入框$(".tips").click(function(){var text=$(this).text();$("#searchtitle").val(text);$("#result").css("display","none");});}});},500);//延迟加载时间});
});
</script>
servlet代码

String title=request.getParameter("title");response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter();//默认最多出现六条数据 看你的需求  String sql="select name from items where name like'%"+title+"%' limit 6";try {ResultSet rs=DBUtil.getConn().createStatement().executeQuery(sql);StringBuffer sb=new StringBuffer();//拼Josn格式的数据while(rs.next()){sb.append(rs.getString(1)+",");}//sb.substring(0,(sb.length()-1))是一个String类型的;if(sb.length()>0){out.print(sb.substring(0,(sb.length()-1)));}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}out.flush();out.close();

4、层级菜单


sevlet获取的数据库中的数据


String sql="SELECT cid,cname from catalog where pid='00'";List<Catalog> list=new ArrayList<Catalog>();try {ResultSet rs=DBUtil.getConn().createStatement().executeQuery(sql);Catalog cata=null;while(rs.next()){cata=new Catalog();cata.setCid(rs.getString(1));cata.setCname(rs.getString(2));list.add(cata);}request.setAttribute("list", list);}catch (Exception e) {e.printStackTrace();}request.getRequestDispatcher("jq_ajax.jsp").forward(request, response);

jsp代码

<divid="menudiv"><ul><c:forEachitems="${list }" var="v"><liclass="oneli" id="${v.cid }">${v.cname}</li><ulclass="twoul"></ul></c:forEach></ul>
</div>

<script type="text/javascript">$(function(){$(".oneli").click(function(){var id=$(this).attr("id");var mythis=this;//在回调函数不能使用this对象var l = $(mythis).next(".twoul").children("li").length;if(l==0){var url="AjaxServlet?on=menu";$.post(url,{id:id},function(data){data = eval("(" + data + ")");for(var i=0;i<data.length;i++){$(mythis).next(".twoul").append("<li>"+data[i].cname+"</li>");}});}$(this).next(".twoul").toggle();});});
</script>

用来异步获取数据的servlet

String id=request.getParameter("id");response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter();String sql="SELECT cid,cname from catalog where pid='"+id+"'";List<Catalog> list=new ArrayList<Catalog>();try {ResultSet rs=DBUtil.getConn().createStatement().executeQuery(sql);Catalog cata=null;while(rs.next()){cata=new Catalog();cata.setCid(rs.getString(1));cata.setCname(rs.getString(2));list.add(cata);}}catch (Exception e) {e.printStackTrace();}String jsonList=JSONArray.fromObject(list).toString();out.print(jsonList);out.flush();out.close();

5、异步分页

这个例子我用到了封装json数据的包

使用JSONObject类的对象操作JSON对象
JSONArray 用来转换json数组格式的数据
get方法  根据下标获取JSONArray 对象里面的值
JSONObject用来转换json对象格式的数据

需要用到jar包



jsp代码

<div>
<center>
<table>
<thead>  <tr><td>id</td><td>所属类别</td><td>商品名称</td><td>产地</td></tr>
</thead><tbody id="example"></tbody>
</table>
</center>
<div id="page">
</div>
</div>
<script type="text/javascript">
var nowpage=1;
$(function(){getJson(1);
});
function getJson(nowpage){var url1="AjaxServlet?on=ajaxpage";$.ajax({  type: "post", async: "false",data:{page:nowpage},url: url1,  success: function(info){$("#example").empty();$("#page").empty();var obj=eval("("+info+")");var endPage=obj.page.endPage;var nowPage=obj.page.nowPage;$.each(obj.list,function(i,v){$("#example").append("<tr><td>"+v.id+"</td><td>"+v.cid+"</td><td>"+v.city+"</td><td>"+v.name+"</td></tr>");});$("#page").append("当前:"+nowPage+"/"+endPage+"页<a href='javascript: getJson(1)'>首页</a><a href='javascript: getJson("+(nowPage-1)+")'>上一页</a>");for(var i=1;i<=endPage;i++){$("#page").append("<a href='javascript: getJson("+i+")'>"+i+"</a>");}$("#page").append("<a href='javascript: getJson("+(nowPage+1)+")'>下一页</a><a href='javascript: getJson("+endPage+")'>末页</a>");}});
}</script>
servlet代码

response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter();String page=request.getParameter("page");int pageSize=5;//一页显示的页数int pageCount=27;//总页数List<Items> itemsList=new ArrayList<Items>();int nowPage=(page=="" || page==null)?1:Integer.parseInt(page);//计算当前页int endPage=pageCount/pageSize;//末页endPage=(pageCount%pageSize==0)?endPage:endPage+1;//计算末页,不够一页补一页nowPage=(nowPage<1)?1:nowPage;//如果当前页小于1,则返回第一页nowPage=(nowPage>=endPage)?endPage:nowPage;//如果的当前页大于末页,则返回末页Page p=new Page();p.setNowPage(nowPage);p.setEndPage(endPage);String sql="select * from items limit "+(nowPage-1)*pageSize+","+pageSize;try {ResultSet rs=DBUtil.getConn().createStatement().executeQuery(sql);Items i=null;while(rs.next()){i=new Items();i.setId(rs.getInt("id"));i.setCid(rs.getString("cid"));i.setName(rs.getString("name"));i.setCity(rs.getString("city"));itemsList.add(i);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}Map<String,Object> map=new HashMap<String,Object>();map.put("page", p);map.put("list", itemsList);String jsonList=JSONObject.fromObject(map).toString();System.out.println(jsonList);out.print(jsonList);

由于现在写的太多了,所以没本法放个文档,对于JSONArray和JSONObect不懂得可以微博联系我,我给你文档....

想要源代码的亦可以给我发微博

希望大家一起学习





http://chatgpt.dhexx.cn/article/6w0bEJXf.shtml

相关文章

Java 网络编程(大全)

前言必读 读者手册&#xff08;必读&#xff09;_云边的快乐猫的博客-CSDN博客 一、1网络通信的基本模式分为两种 1.CS模式&#xff08;Client---客户端&#xff0c;Server---服务端&#xff09; 客户端是需要程序员去开发的&#xff0c;例如日常使用的各种的APP&#xff0c…

java游戏编程:三路兵线,BOSS走位,代码和视频

一、基本功能&#xff1a; 坦克大战&#xff1a;三路兵线的走&#xff0c;停&#xff0c;走&#xff0c;停。四个版本的飞机大战&#xff1a;多种运动方式。都有代码和视频下载地址。 二、后续改进&#xff1a; 走&#xff0c;停发起攻击&#xff0c;走&#xff0c;停发起攻击…

Java实现石头剪刀布游戏

思路&#xff1a;采取5局3胜制&#xff1b;用两个变量a、b标记&#xff0c;若&#xff0c;第一局电脑胜&#xff0c;则b加1&#xff0c;反之亦然。其中用到int randomNumber new Random().nextInt(4) 随机生成04的一个数&#xff0c;通过生成的数索引数组中的内容&#xff0c;…

Java实现猜数游戏

1 问题 编写一个Java程序&#xff0c;实现以下功能&#xff1a; 2 方法 首先导入java.util包下的Random&#xff0c;让程序随便分配给用户一个数。 再导入java.util包下的Scanner类&#xff0c;构建Scanner对象&#xff0c;以便输入。 利用Random().nextInt()生成一个随机的i…

Java小游戏:飞翔的小鸟 【附源码和素材】

目录 一、项目分析 二、项目展示 1.开始状态 2.运行状态 3.结束状态 三、实现代码 1.游戏启动类 2.地面类 3.小鸟类 4.柱子类 四、代码资源 一、项目分析 创建一个窗口和画板&#xff0c;把画板放到窗口上&#xff0c;在画板上绘画图片 &#xff08;2&#xff09;让小鸟…

Java——猜数字游戏

目录 &#x1f351;前置知识 &#x1f351;题目要求 &#x1f351;代码实现 &#x1f351;测试 &#x1f351;前置知识 既然是猜数字那么就要生成一个随机数 在Java中要生成一个指定范围之内的随机数字有两种方法&#xff1a;一种是调用 Math 类的 random() 方法&…

Java简单实现猜拳游戏

前言 Random类的简单使用 .nextInt()方法&#xff0c;返回伪随机的&#xff0c;均匀分布 int值介于0&#xff08;含&#xff09;和指定值&#xff08;不包括&#xff09;&#xff0c;从该随机数生成器的序列绘制。 public class Demo_02 {//出拳游戏:1表示石头,2表示剪刀,3表…

java实现猜拳游戏

剪刀、石头、布又称“猜丁壳”&#xff0c;古老而简单&#xff0c;这个游戏的主要目的是为了解决争议&#xff0c;因为三者相互制约&#xff0c;因此不论平局几次&#xff0c;总会有胜负的时候。 游戏规则中&#xff0c;石头克剪刀&#xff0c;剪刀克布&#xff0c;布克石头。…

Java游戏编程前篇 修改eclipse背景颜色

最近准备开始研究java游戏设计了。&#xff08;不是安卓的游戏设计&#xff0c;关于安卓的游戏设计&#xff0c;我打算学完java之后直接学cocos2dx&#xff0c;学习java的原因是因为在公司里接触到了eclipse&#xff0c;所以打算顺便将java也啃下来&#xff0c;以后说不定哪天就…

java游戏开发入门(一) - HelloWorld

java游戏开发入门&#xff08;一&#xff09;- HelloWorld 前言开发环境启程 Hello WorldMaven启动类 HelloWorldApp创建一个600 x 600&#xff0c;标题为"Hello world"的窗体main运行效果完整代码 完整项目 前言 开发一款游戏&#xff0c;我相信很多人在学习开发之前…

JAVA编程实现猜数游戏

1.该程序就是随机生成一个1-100的整数让玩家进行游戏&#xff0c;不限次数&#xff0c;直到玩家猜对为止。 2.使用while循环语句实现功能 3.代码展示 import java.util.Random; import java.util.Scanner;public class S11 {public static void main(String[] args) {Random…

Java游戏框架编写

自己抽空编写的一个2D游戏框架(也可以说是工具类集吧)&#xff0c;在此记录一下&#xff0c;开发完了顺便写了一个案例判断框架的可用性 项目地址&#xff1a;https://gitee.com/shaokang123/spring-game-starter 框架特点 支持直接使用Tiled设计地图&#xff0c;以name为beanN…

Java游戏编程——愤怒的小鸟(一)

Java游戏编程——愤怒的小鸟&#xff08;一&#xff09; 前言&#xff1a;最近在b站up主尚学堂杨老师&#xff08;b站链接&#xff09;学习了我做的第一个游戏项目&#xff0c;所以在csdn进行总结&#xff0c;便于今后查看。 本部分主要是将游戏的背景绘制出来 先上一张效果…

java游戏开发(java游戏开发教程)

Java游戏开发绘图器是什么呢&#xff1f; 众所周知&#xff0c;Java GUI以paint进行绘图&#xff0c;以repaint进行图像刷新&#xff0c;而完成repaint及paint这一连贯过程中所用到绘图组件&#xff0c;我将其称为绘图器。就我个人的体会&#xff0c;绘图器的调用时机应始终处于…

Java编程实现三种等级的扫雷游戏(完整版)

大家好&#xff0c;我是陈橘又青&#xff0c;今天用Java编程实现图形化界面的扫雷游戏&#xff08;三种难度&#xff09;&#xff0c;以下是完整的开发思路以及代码&#xff0c;供各位讨论交流。 文章目录 一、效果展示初级难度中级难度高级难度测试界面 二、项目介绍项目背景功…

Java游戏编程初步

现在流行的游戏似乎都是用C或C来开发的。在java平台上几乎没有很大型及可玩的流行游戏。由于java是个新生语言&#xff0c;他的许多特性还有待大家的发掘,但是我们不能否认Java在游戏编程方面的强大性。本文将带领大家一步一步学习编写Java游戏。最终打造属于自己的Java游戏。 …

如何用java语言编写小游戏?(一)

学习java的过程中&#xff0c;如果想找一些小游戏项目来练手的话&#xff0c;我们需要学习哪些技术先呢&#xff1f;&#xff08;适用于java初学者&#xff09; 第一步&#xff1a;了解GUI编程—Swing基础 GUI&#xff08;Graphical User interface&#xff09;&#xff1a; …

SQL编程篇

SQL编程篇 这是以前的学习总结&#xff1a; 这一周将SQL编程篇仔细地看了一遍&#xff0c;有不少感触&#xff0c;因为SQL Server 中的T-SQL语言&#xff0c;在某种程度上就类似C等编程语言&#xff0c;其中有基本运算、控制语句及函数还有一个叫存储过程的东东。但目前对他们在…

SQL语言

创建数据库 创建table&#xff0c;create table后可以"库名.表名"或者"库名.用户.表名"&#xff0c;也可以用上面工具选择&#xff0c;如果名字中含有特殊关键字&#xff0c;mysql需要交,sql server需要加[] 创建表 CREATE TABLE Student (S# CHAR ( 8 …

mysql -sql编程

基础语句 # 创建库 create database dome; # 切换到数据库 use dome; # 创建表 create table z (a int unsigned); # 查看表show create table z; # 查看表结构 desc z; # 插入数据 insert into z value(1);# 修改表字段类型 alter table zz change column a a int auto_incre…