黑马day17 ajax入门案例

怎样实现Ajax异步交互:

 *实现Ajax的步骤:

(1).创建XMLHttpRequest对象

固定写法。不用记...假设面试问到。所以最好是背诵下来

(2).注冊监听

利用XMLHttpRequest对象的onreadystatechange属性:用来监听属性的状态

利用XMLHttpRequest对象的readyState属性:获取server端的状态

利用XMLHttpRequest对象的status属性:获取状态码(200,404等)

(3).建立连接

利用XMLHttpRequest对象的open()方法

(4).发送请求

利用XMLHttpRequest对象的send方法(假设请求类型是get方式,send方法不起作用.假设请求方式是post方式,send方法起作用)

Ajax异步交互中get和post方式的差别

假设请求类型是post方式的话,须要设置请求头部信息:"Content-Type"为"application/x-www-form-urlencoded"

send方法起作用

open方法的第一个參数

案例1:測试get方式:

1.測试使用的jsp页面...当中导入要使用的js文件...test.js

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
	<meta http-equiv=" pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<script type="text/javascript" src="test.js"></script>
  </head>
  
  <body>
    <form action="">
    	<input type="button" name="ok" id="ok" value="測试server连接"/>
    </form>
  </body>
</html>
2.js文件:

<span style="font-size:14px;">//当页面载入完成之后才运行以下的代码
window.οnlοad=function(){
	//当点击button的时候就会触发以下的事件
	document.getElementById("ok").οnclick=function(){
		//1.得到xmlHttpRequest对象
		var xhr=ajaxFunction();
		//2.监听server...server端向client进行响应
		xhr.onreadystatechange=function(){//用于监听server端的状态
			if(xhr.readyState==4){//readyState 属性表示请求的当前的状态。他的值但是是以下的5中情况
				if(xhr.status==200||xhr.status==304){//假设响应码是200或者304的话就接受数据
				//接收server端的响应结果 文本类型
					var data=xhr.responseText;
					alert(data);
				}
			}
		}
		//3.建立client与server的连接
		//-- *method:get 或者 post *url:请求路径,能够是相对路径也能够是绝对路径. *asych 是不是异步处理请求
		xhr.open("get","../servlet/TestGetServlet?

c=5",true); //4.client向server端发送请求 //-- * 假设请求方式是get方式的话。send方法发送数据server接收不到数据 * 该步骤不能够被省略 </span><span style="font-size:18px;color:#ff0000;"><strong>xhr.send("a=3&b=4");</strong></span><span style="font-size:14px;"> } } function ajaxFunction(){ var xmlHttp; try{ // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e){ try{// Internet Explorer xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e){ try{ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){} } } return xmlHttp; } </span>

3.写servlet类:

package app.servlet;

import java.io.IOException;

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

public class TestGetServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().write("connect is successful!");
		String a = request.getParameter("a");
		String b=request.getParameter("b");
		String c=request.getParameter("c");
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

控制台:只打印了c可是send方法中的參数没有打印..这说明send方法对get方式无效





页面:


案例2:測试post请求方式:这里的jsp页面中的form中的參数method改为了post

1.jsp页面...post提交

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
	<meta http-equiv=" pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">   
	<script type="text/javascript" src="test.js"></script> 
  </head>
  <body>
    <form action=""<span style="color:#ff6666;"> </span><span style="color:#cc0000;"><strong>method="post"</strong></span>>
    	<input type="button" name="ok" id="ok" value="測试post连接"/>
    </form>
  </body>
</html>

2.js文件

<span style="font-size:14px;">window.οnlοad=function(){
	document.getElementById("ok").οnclick=function(){
		//1.得到xhr对象
		var xhr=ajaxFunction();
		//2.server对客户机的响应
		xhr.onreadystatechange=function(){
			if(xhr.readyState==4){
				if(xhr.status==200){
					var data=xhr.responseText;
					alert(data);
				}
			}
		}
		//3.建立客户机和server的连接
		xhr.open("post","../servlet/TestPostServlet",true);
		
		//假设请求类型是POST方式的话,须要设置请求首部信息
		</span><strong><span style="font-size:18px;color:#ff0000;">xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");</span></strong><span style="font-size:14px;">
		//4.客户机向server发送数据
		xhr.send("a=7&b=8");
	}
}
function ajaxFunction(){
   var xmlHttp;
   try{ // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e){
	   try{// Internet Explorer
	         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	      }
	    catch (e){
	      try{
	         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	      }
	      catch (e){}
	      }
    }

	return xmlHttp;
 }
</span>
3.servlet:

package app.servlet;

import java.io.IOException;

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

public class TestPostServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String a = request.getParameter("a");
		String b = request.getParameter("b");
		response.getWriter().write("connection is successful!");
		System.out.println(a);
		System.out.println(b);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}
控制台:



转载于:https://www.cnblogs.com/ljbguanli/p/7159897.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下为B站黑马JavaScriptAjax案例代码——图书管理案例搜索事件: ```javascript /** * 搜索事件 */ function searchBook() { // 获取搜索框内容 var searchInput = document.querySelector("#searchInput"); var keywords = searchInput.value.trim(); // 如果搜索框内容为空,提示用户 if (keywords == "") { alert("请输入关键字进行搜索!"); return; } // 发送Ajax请求 var xhr = new XMLHttpRequest(); // 创建XmlHttpRequest对象 xhr.open("GET", "/api/book/search?keywords=" + keywords, true); // 配置请求 xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { // 处理响应数据 var books = JSON.parse(xhr.responseText); // 将响应数据转成JavaScript对象 renderBooks(books); // 渲染图书列表 } }; xhr.send(null); // 发送请求 } /** * 渲染图书列表 * @param {*} books 图书列表数据 */ function renderBooks(books) { // 获取图书列表容器 var bookList = document.querySelector("#bookList"); var html = ""; if (books.length > 0) { // 遍历图书列表数据,生成HTML字符串 for (var i = 0; i < books.length; i++) { html += '<tr>'; html += '<td>' + books[i].title + '</td>'; html += '<td>' + books[i].author + '</td>'; html += '<td>' + books[i].category + '</td>'; html += '<td>' + books[i].price + '</td>'; html += '<td>' + books[i].publisher + '</td>'; html += '</tr>'; } } else { // 如果没有搜索到任何图书,提示用户 html = '<tr><td colspan="5">没有搜索到任何图书!</td></tr>'; } // 将生成的HTML字符串添加进图书列表容器 bookList.innerHTML = html; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值