ajax异步请求(练习版)

1. ajax是什么?
  • asynchronous javascript and xml:异步的js和xml
  • 它能使用js访问服务器,而且是异步访问
  • 服务器给客户端的响应一般是整个页面,一个html完整页面!但在ajax中因为是局部刷新,那么服务器就不用再响应整个页面!而只是数据
    text:纯文本
    xml:大家都熟悉
    json:它是js提供的数据交互格式,它在ajax中最受欢迎
2. 异步交互和同步交互
  • 同步:

    发一个请求,就要等待服务器的响应结束,然后才能发第二个请求!中间这段时间就是一个字“卡”
    刷新的是整个页面

  • 异步:

    发一个请求后,无需等待服务器的响应,然后就可以发第二个请求
    可以使用js接收服务器的响应,然后使用js来局部刷新

3. ajax应用场景
  • 百度的搜索框
  • 用户注册时(校验用户名是否被注册过)
4. ajax的优缺点

优点:

  • 异步交互:增强了用户的体验
  • 性能:因为服务器无需再响应整个页面,只需要响应部份内容,所以服务器的压力减轻了

缺点:

  • ajax不能应用在所有场景
  • ajax无端的增多了对服务器的访问次数,给服务器带来了压力
5.创建一个ajax

使用jq创建一个异步请求,传输内容为json对象
记着导入jquery.js包
jquery手册$.post()的用法<----------------------点击跳转

1.写一个简单的首页index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>Title</title>
  </head>
  <script src="./js/jquery.min.js"></script>
  <body>
    <div>
      姓名:<input name="username" type="text"/><br>
      <input type="button" id="aj"  value="AJ"><br>
      <p id="p1"></p>
    </div>
  </body>
  <script>
  //给按钮绑定点击事件
      $("#aj").click(function () {
     	 //"aj"请求的页面地址, "name=John&location=Boston" 传的参数
          $.post("aj", "name=John&location=Boston", function (res) {
          	//这个是数组与json混用时的遍历,在aj servelt页面有对应的String s
              /*for (var i = 0; i < res.length; i++) {
                  var s = res[i];
                  for (key in s) {
                      alert(s[key]);
                  }
              }*/
              for (key in res) {
                  alert(res[key]); //"name"
              }
              alert(res["name"]); //获取json数据res.name,res["name"]
          }, "json");
      });
  </script>
</html>
2.写一个简单的servlet
package classTest;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/aj")
public class aj extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String s1="{\"name\":\"吴1\",\"location\":\"流C\",\"age\":2}";
        String s = "[{\"name\":\"吴2\",\"location\":\"流C\",\"age\":3}," +
                "{\"name\":\"吴3\",\"location\":\"流B\",\"age\":1}," +
                "{\"name\":\"吴4\",\"location\":\"流C2\",\"age\":32}]";
        //设置响应的格式json,和字符编码utf-8
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write(s1);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}
3.运行

运行点击按钮之后网页就可以不停的弹出,前三个是遍历得到的,最后一个是直接根据json里的key值得到的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值