Web阶段:第二十章:Ajax请求

简介: Web阶段:第二十章:Ajax请求

什么是Ajax请求?

AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

ajax是一种浏览器异步发起请求。局部更新页面的技术。

1、异步发起请求

2、局部更新页面

原生Ajax请求的实现(了解)

    <script type="text/javascript">
      function ajaxRequest() {
//  1、我们首先要创建XMLHttpRequest 
  var xmlHttpRequest = new XMLHttpRequest();
//  2、调用open方法设置请求参数
  xmlHttpRequest.open("GET", "http://localhost:8080/day17/ajaxServlet?action=javaScriptAjax", true);
//  4、在send方法前绑定onreadystatechange事件,处理请求完成后的操作。
  xmlHttpRequest.onreadystatechange = function(){
  if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
        alert("响应回来啦");
      //  alert("服务器返回的数据是:" + xmlHttpRequest.responseText);
        var jsonObj = JSON.parse( xmlHttpRequest.responseText );
      //  alert( "编号:" + jsonObj.id + ",姓名:" + jsonObj.name );
        document.getElementById("div01").innerHTML = "编号:" + jsonObj.id + ",姓名:" + jsonObj.name;
    }
  }
//  3、调用send方法发送请求
  xmlHttpRequest.send();
  alert("这是请求后面的代码");
    }
 </script>

Jquery中的Ajax请求

$.ajax方法

url 请求的地址

type 请求的方式GET或POST

data 请求的参数(发送给服务器的数据)

支持两种格式

一:name=value&name=value

二: { 属性名:值 }

success 请求成功后响应的函数

dataType 服务器回传的数据类型

1.text返回纯文本、

2.xml、

3.json返回json对象

案例:

// ajax请求
$("#ajaxBtn").click(function(){
  $.ajax({
    url:"http://localhost:8080/day17/ajaxServlet",
    type:"GET",
    data:"action=jqueryAjax",
    success:function(msg){
      // 这个success的函数。一定要有一个参数。这个参数是服务器回传的数据
      alert(msg);
      $("#msg").html("编号是:" + msg.id + ",姓名:" + msg.name);
    },
    dataType:"json"
  });
});

$.get方法和$.post方法

url 请求的地址

data 请求的数据

callback 请求成功的回调函数

type 响应的数据类型

案例:

// ajax--get请求
$("#getBtn").click(function(){
  $.get("http://localhost:8080/day17/ajaxServlet",{
      action:"jqueryGet"          
    },function(msg){
      // msg 请求成功的回调函数。参数msg是用来接收响应的数据
      $("#msg").html("编号是:" + msg.id + ",姓名:" + msg.name);
    },"json");
});
// ajax--post请求
$("#postBtn").click(function(){
  // post请求
  $.post("http://localhost:8080/day17/ajaxServlet","action=jqueryPost",function(msg){
    // msg 请求成功的回调函数。参数msg是用来接收响应的数据
    $("#msg").html("post请求 编号是:" + msg.id + ",姓名:" + msg.name);
  },"json");
});

$.getJSON方法

url 请求的地址

data 请求的参数

callback 成功的回调

getJSON 请求方式固定是GET请求,响应的数据,固定是json格式。

案例:

// ajax--getJson请求
$("#getJSONBtn").click(function(){
  // 调用
  $.getJSON("http://localhost:8080/day17/ajaxServlet","action=jqueryGetJSON",function(msg){
    $("#msg").html("getJSON请求  编号是:" + msg.id + ",姓名:" + msg.name);
  });
});

表单序列化serialize()

serialize() 方法可以把一个form表单中所有的表单项。都以字符串name=value&name=value的形式进行拼接,省去我们很多不必要的工作。

由于$.get、$.post和getJSON这三个方法的底层都是直接或者间接地使用$.ajax()方法来实现的异步请求的调用。

案例:

// ajax请求
  $("#submit").click(function(){
    // 把参数序列化
    // serialize() 方法可以把表单项以name=vlaue&name=value进行拼接。
    var data = $("#form01").serialize();
    alert(data);
    //当我们点击这个按钮的时候,我们希望把表单中所有的表单项,
    // 以name=value&name=value的信息,进行拼接,然后发送给服务器
    $.getJSON("http://localhost:8080/day17/ajaxServlet","action=jquerySerialize&" + data,function(msg){
      $("#msg").html("jquerySerialize  编号是:" + msg.id + ",姓名:" + msg.name);
    });
  });

实例:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="pragma" content="no-cache" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript" src="script/jquery-1.7.2.js"></script>
    <script type="text/javascript">
      $(function(){
        // ajax请求
        $("#ajaxBtn").click(function(){
          $.ajax({
            url : "ajaxServlet", // 请求地址
            error:function(){   // 请求失败回调
              alert("请求失败");
            },
            success:function(data){ // 请求成功回调
              alert( data );
            },
            type:"POST",        // 请求的方式
            dataType:"json",      // 返回的数据类型为json对象
            data:{            // 请求的参数
              action:"jqueryAjax",
              a:12,
              date: new Date()
            }
          });
        });
        // ajax--get请求
        $("#getBtn").click(function(){
          $.get(
            "ajaxServlet",{
              action:"jqueryGet",
              a:12,
              date:new Date()
            },function(data){alert(data);},"json"
          );
        });
        // ajax--post请求
        $("#postBtn").click(function(){
          // post请求
          $.post(
            "ajaxServlet", // 请求路径
            {       // 请求参数
              action:"jqueryPost",
              a:12,
              date:new Date()
            },
            function(data){ alert( data ) },  // 成功的回调函数
            "text"              // 返回的数据类型
          );
        });
        // ajax--getJson请求
        $("#getJsonBtn").click(function(){
          // 调用
          $.getJSON(
            "ajaxServlet",    // 请求路径
            {         // 请求参数
              action:"jqueryGetJSON",
              a:12,
              date:new Date()
            }, 
            function(data){ alert( data ) }  // 成功的回调函数   
          );
        });
        // ajax请求
        $("#submit").click(function(){
          // 把参数序列化
          var data = $("#form01").serialize();
          alert(data);
        });
      });
    </script>
  </head>
  <body>
    <div>
      <button id="ajaxBtn">$.ajax请求</button>
      <button id="getBtn">$.get请求</button>
      <button id="postBtn">$.post请求</button>
      <button id="getJsonBtn">$.getJSON请求</button>
    </div>
    <br/><br/>
    <form id="form01" >
      用户名:<input name="username" type="text" /><br/>
      密码:<input name="password" type="password" /><br/>
      下拉单选:<select name="single">
          <option value="Single">Single</option>
          <option value="Single2">Single2</option>
      </select><br/>
        下拉多选:
        <select name="multiple" multiple="multiple">
          <option selected="selected" value="Multiple">Multiple</option>
          <option value="Multiple2">Multiple2</option>
          <option selected="selected" value="Multiple3">Multiple3</option>
        </select><br/>
        复选:
      <input type="checkbox" name="check" value="check1"/> check1
      <input type="checkbox" name="check" value="check2" checked="checked"/> check2<br/>
      单选:
      <input type="radio" name="radio" value="radio1" checked="checked"/> radio1
      <input type="radio" name="radio" value="radio2"/> radio2<br/>
      <input id="submit" type="submit" />
    </form>     
  </body>
</html>

2)AjaxServlet的代码如下:

package com.atguigu.servlet;
import java.io.IOException;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.atguigu.gson.GsonTest;
import com.google.gson.Gson;
public class AjaxServlet extends BaseServlet {
  private static final long serialVersionUID = 1L;
  protected void javaScriptAjax(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    System.out.println("ajax请求过来了 a--" + request.getParameter("a"));
    Random random = new Random(System.currentTimeMillis());
    // 使用随机数,可以让客户端看到变化
    response.getWriter().write(
        new Gson().toJson(new GsonTest.Person(random.nextInt(100), "12312")));
  }
  protected void jqueryAjax(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    System.out.println("jqueryAjax请求过来了 a--" + request.getParameter("a"));
    Random random = new Random(System.currentTimeMillis());
    // 使用随机数,可以让客户端看到变化
    response.getWriter().write(
        new Gson().toJson(new GsonTest.Person(random.nextInt(100), "12312")));
  }
  protected void jqueryGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    System.out.println("jqueryGet请求过来了 a--" + request.getParameter("a"));
    Random random = new Random(System.currentTimeMillis());
    // 使用随机数,可以让客户端看到变化
    response.getWriter().write(
        new Gson().toJson(new GsonTest.Person(random.nextInt(100), "12312")));
  }
  protected void jqueryPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    System.out.println("jqueryPost请求过来了 a--" + request.getParameter("a"));
    Random random = new Random(System.currentTimeMillis());
    // 使用随机数,可以让客户端看到变化
    response.getWriter().write(
        new Gson().toJson(new GsonTest.Person(random.nextInt(100), "12312")));
  }
  protected void jqueryGetJSON(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    System.out.println("jqueryGetJSON请求过来了 a--" + request.getParameter("a"));
    Random random = new Random(System.currentTimeMillis());
    // 使用随机数,可以让客户端看到变化
    response.getWriter().write(
        new Gson().toJson(new GsonTest.Person(random.nextInt(100), "12312")));
  }
}
相关文章
|
20天前
|
XML 前端开发 JavaScript
|
1月前
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
59 22
|
19天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
33 1
|
1月前
|
前端开发 JavaScript
回顾前端页面发送ajax请求方式
回顾前端页面发送ajax请求方式
38 18
|
1月前
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
70 4
|
1月前
|
前端开发 JavaScript 数据处理
JQuery 拦截请求 | Ajax 请求拦截
【10月更文挑战第4天】
95 1
|
1月前
|
前端开发 JavaScript API
惊呆了!学会AJAX与Fetch API,你的Python Web项目瞬间高大上!
在Web开发领域,AJAX与Fetch API是提升交互体验的关键技术。AJAX(Asynchronous JavaScript and XML)作为异步通信的先驱,通过XMLHttpRequest对象实现了局部页面更新,提升了应用流畅度。Fetch API则以更现代、简洁的方式处理HTTP请求,基于Promises提供了丰富的功能。当与Python Web框架(如Django、Flask)结合时,这两者能显著增强应用的响应速度和用户体验,使项目更加高效、高大上。
51 2
|
1月前
|
前端开发 API 开发者
从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
43 3
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
58 10
React技术栈-react使用的Ajax请求库实战案例
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
33 7
React技术栈-react使用的Ajax请求库用户搜索案例
下一篇
无影云桌面