JS ajax 例子「建议收藏」

JS ajax 例子「建议收藏」用js,jQuery编写ajax的样式,三种写法,例子://用js原生写法functionsendGet(url){xhr.onreadystatechange=function(){ if(xhr.readyState==4&&xhr.status==200){ //获取服务器响应 document…

大家好,又见面了,我是你们的朋友全栈君。

用 js , jQuery 编写 ajax 的样式,三种写法,例子:

//用 js 原生写法
function sendGet(url){
    xhr.onreadystatechange =function(){
	    if(xhr.readyState == 4 && xhr.status == 200){
	    //获取服务器响应
	    document.querySelector("#show").innerHTML = xhr.responseText;
	    }
	};
    //发送异步请求
	xhr.open("GET",url,true);
	//发送请求
	xhr.send();
}
//jQuery 写法
function sendGet(url){
	$.get(url,function(data){
	document.querySelector("#show").innerHTML = data;
});	
function sendGet(url){
    //用 ajax 写
    $.ajax(
    {
	    url:url,
	    method:'get',
	    success: function(data){
		    document.querySelector("#show").innerHTML = data;
	    },
	    error:function(err){
		    alert(err);
	    }					
    });
}

整体的代码:将项目放在 TomCat 下的 root 文件夹下,浏览器输入 localhost:8080/history.html 即可运行。

history.html 代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>首页</title>
		<script src="jquery-1.10.1.js" type="text/javascript" charset="utf-8"></script>
		<style type="text/css">			
			table{
				display: inline-table;
				width: 320px;
				border: 1px solid lightgray;
				border-collapse: collapse;
				vertical-align: top;
				margin-right: 0px;
			}
			td{
				padding: 15px;
				cursor: pointer;
				border: 1px solid lightgray;
				
			}
			tr{
				background: linear-gradient(to right,#f6f6f6,#fff);
			}
			tr:hover{
				background: linear-gradient(to right,#eee,#f6f6f6);
			}
			
			div>div{
				display: inline-block;
				width: 400px;
				height: 300px;
				padding: 10px;
				box-sizing: border-box;
				border: 1px solid lightgray;
				margin-left:0px ;			
			}			
		</style>				
	</head>
	<body>	
		<div style="width: 725px;">
			<table border="1" cellspacing="0" cellpadding="0">
				<tr><td title="java">疯狂java 讲义</td></tr>
				<tr><td title="ee">java ee</td></tr>
				<tr><td title="android"> android</td></tr>
				<tr><td title="html">  html </td></tr>
				<tr><td title="front">front</td></tr>				
			</table>
			<div id="show">				
			</div>
		</div>			
		<script type="text/javascript">		
			var xhr = new XMLHttpRequest();
			window.onload = function(){
				//页面加载时,替换 history 的状态
				history.replaceState(null,"首页","history.html?id=java");
			}
			//获取页面上所有td元素
			var tdList = document.querySelectorAll("td");
			//遍历所有的 td 元素, 为他们的 onclick 时间绑定处理函数
			for(var i =0;i< tdList.length;i++){
				tdList[i].onclick = function(src){
					//以当前单元格的 title为参数发送异步请求
					sendGet("books.jsp?id=" + src.target.title);
					//想 history 压入状态
					history.pushState({"cellTitle":src.target.title},
						"首页","history.html?id="+ src.target.title);
				//取消所有td元素的背景色
				var tdList = document.querySelectorAll("td");
				for(var i=0;i <tdList.length; i++){
					tdList[i].style = undefined;
				}
				//为当前单击的单元格设置背景色
				src.target.style.background = 
						"linear-gradient(to right,#ddd, #eee)";
				}
			}
			/*
			//用 js 原生写法
			function sendGet(url){
				xhr.onreadystatechange =function(){
					if(xhr.readyState == 4 && xhr.status == 200){
						//获取服务器响应
						document.querySelector("#show").innerHTML = xhr.responseText;
					}
				};
				
				//发送异步请求
				xhr.open("GET",url,true);
				//发送请求
				xhr.send();
			}
			*/
			
			//jQuery 写法
			function sendGet(url){
				//$.get(url,function(data){
				//	document.querySelector("#show").innerHTML = data;
				//});	
				
				//用 ajax 写
				$.ajax(
				{
					url:url,
					method:'get',
					success: function(data){
						document.querySelector("#show").innerHTML = data;
					},
					error:function(err){
						alert(err);
					}					
				});
			}
			
			//为窗口的 popstate 事件绑定监听器
			window.addEventListener("popstate",function(){
				//获取history 的状态数据
				var curTitle = history.state["cellTitle"];
				var tdList = document.querySelectorAll("td");
				//取消所有单元格的背景色,只设置被选中的单元格的背景色
				for(var i = 0;i <tdList.length ; i++){
					if(tdList[i].title == curTitle){
					tdList[i].style.background ="linear-gradient(to right,#ddd,#eee)";
					}
					else{
						tdList[i].style = undefined;
					}
				}	
					//通过窗口地址栏获取请求参数
					queryStr = window.location.href.split("?")[1];
					//发送异步请求	
					sendGet("books.jsp?"+ queryStr);
			});			
		</script>					
	</body>
</html>

book.jsp 代码:

<%@page pageEncoding="UTF-8"%>
<%
	String id = request.getParameter("id");
	String result =null;
	if (id.equals("java")) {
		result = "java 书,111111111111111111111111";
	}else if (id.equals("ee")){
		result = "java ee书,2222222222222222222222";
	}else if (id.equals("android")){
		result = "android 书,33333333333333333333333";
	}else if (id.equals("html")){
			result = "html 书,4444444444444444444444444444";
	}else if (id.equals("front")){
			result = "front 书,55555555555555555";    
	}
	out.println(result);	
%>

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158768.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 史上最全设计模式导学目录(完整版)

    史上最全设计模式导学目录(完整版)圣诞献礼!2012年-2013年,Sunny在CSDN技术博客中陆续发表了100多篇与设计模式相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式+简单工厂模式),为了方便大家学习,现将所有与设计模式学习相关文章的链接进行了整理,希望能给各位带来帮助!

    2022年6月14日
    23
  • 请简述list,set,map类型的集合的各自特点_list与set的区别

    请简述list,set,map类型的集合的各自特点_list与set的区别List、Map、Set的区别与联系一、结构特点List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;List中存储的数据是有顺序的,并且值允许重复;Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的;Set中存储的数据是无顺序的,并且不允许重复,但元素在集合中的位置是由元素的hashcode决定,即位置是固定的(Set集合是根据hashcod…

    2022年9月6日
    2
  • android 的hook技术,Android Native Hook技术(一)

    android 的hook技术,Android Native Hook技术(一)原理分析ADBI是一个著名的安卓平台hook框架,基于动态库注入与inlinehook技术实现。该框架主要由2个模块构成:1)hijack负责将so注入到目标进程空间,2)libbase是注入的so本身,提供了inlinehook能力。源码目录中的example则是一个使用ADBI进行hookepoll_wait的示例。hijackhijack实现动态库注入功能,通过在目标进程插入d…

    2022年5月25日
    53
  • To Noob Json是什么鬼?

    To Noob Json是什么鬼?

    2022年2月4日
    47
  • 分布式事务saga_分布式事务代码例子

    分布式事务saga_分布式事务代码例子1.分布式事务  在前面文章《分布式事务》中介绍了几种分布式事务,其中Saga介绍了相关的概念,接下来介绍Saga使用案例,案例来源《微服务架构设计模式》。2.案例需求分析2.1一个成功的订单创建流程  实现餐馆系统中的创建订单createOrder()操作。这个操作必须验证消费者是否满足下订单的相关条件、验证订单内容、完成消费者的信用卡授权,以及在数据库中创建Order。一个成功的订单创建流程:创建一个待处理订单;验证订单消费者可以下单;创建后厨工单;对消费者提供的信用卡进行授权操

    2022年9月15日
    0
  • ceph S3_ceph minio

    ceph S3_ceph minio参考资料:https://www.cnblogs.com/ytc6/p/7388654.htmlhttp://docs.ceph.com/docs/kraken/start/https://blog.csdn.net/changtao381/article/details/48015623https://blog.csdn.net/litianze99/article/detail…

    2022年8月30日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号