Ajax详解

一、JavaWeb中的路径问题

        / 斜杠 如果被浏览器解析,得到的地址是:http://ip:port/

        / 斜杠 如果被服务器解析,得到的地址是:http://ip:port/工程路径/

        特殊情况:response.sendRedirect(“”);把斜杆发给浏览器去解析,得到http://ip:port/

jsp中获取项目路径  

 ${pageContext.request.contextPath}

为页面中的所有路径配置前置

<base href="前置路径">

二、AJAX

(1)简介:AJAX(Asynchronous Javascript And XML) 是由浏览器解析运行的基于JavaScript实现的网页局部刷新的技术。

(2)用处:在当前网页中显示新的响应内容。(不会覆盖掉原有内容)

(3)特点:

  1. 一种新的让浏览器发起http请求的技术

  2. 使用ajax发起的请求,响应结果不会自动的覆盖原有内容,而是可以在原有页面内容上继续显示

  3. Ajax是一门基于JavaScript的技术,由浏览器解析运行,所以是一种前端(客户端)技术

  4. 简单易用

(4)Ajax基本使用  

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
    <script src="jquery.js"></script>
    <script>
      $(function () {
        $("input:first").blur(function () {
          var val = $(this).val();

          //1.创建Ajax请求对象
          var xhr = new XMLHttpRequest();
          //2.建立连接
          xhr.open("get", "CheckUNameServlet?uname=" + val);
          //3.发送请求
          xhr.send();
          /*
          * readystate:
          *   0:创建了Ajax请求对象,还没有建立连接
          *   1.建立了连接,还没有发送
          *   2.服务器开始处理请求
          *   3.服务器向浏览器响应不完整,常用在获取响应头中的数据
          *   4.服务器向浏览器响应完整
          * */
          //4.监听就绪状态的变化
          xhr.onreadystatechange = function (ev) {
            //判断就绪状态 4 和 响应状态码 200
            if(xhr.readyState == 4 && xhr.status == 200){
              //接收响应的数据
              var responseText = xhr.responseText;
            }
          }
        })
      })
    </script>
  </head>
  <body>
    <form action="">
      <input type="text">
    </form>
  </body>
</html>

三、同步和异步请求 

同步请求:

  • 发送请求后,一直等待服务端的响应,获取到服务端响应,再执行其他的逻辑代码。

    1. 在浏览器地址栏输入url,发起请求

    2. 使用超链接,发起请求

    3. 使用form表单,发起请求

    4. 在js代码中使用window.location.href,发起请求

    5. ajax发起同步请求

异步请求:

  • 发送请求后,不需要等待服务端的响应,继续按照顺序执行其他逻辑代码,监听到响应,自动调用指定的方法。

    1. ajax发起异步请求

设置ajax的同步异步:

        通过设置Ajax请求对象open方法的async参数3的值:

                true:表示异步,默认值

                false:表示同步

 四、请求方式

(1)get请求:Ajax的get请求的请求参数是直接写在请求路径后面

(2)post请求:Ajax的post请求传递参数是需要单独写在send方法中,而且需要设置请求头,该请求头表示此次请求是以表单的方式提交

 //请求方式是post请求,则需要设置请求头,这个请求头就表示是以表单方式提交数据
      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      xhr.send("name=lily&age=15");

五、JSON

使用json数据格式(特殊格式的字符串, 和js对象格式一致),服务器响应Java对象数据给浏览器时,可以使用json字符串的格式。

(1)将获取到的JSON格式的字符串转换为对象

 //方式一:获取响应数据
var data = ajax.responseText;

//使用eval函数将json格式的字符串转为js对象,后端传递的是list集合转为js对象后就是js中的数组了
eval("var arr = " + data);、

//方式二:只能转换{“id”:1 , "name": "zs"},不能转换{id:1 , name:"zs"}

var arr = JSON.parse(data);

(2)在服务端将类转换为JSON格式的字符串

Gson gson = new Gson();
String jsonStr = gson.toJson(list);

(3)获取form表单中的所有数据

var serialize = $("form").serizlize();

(4)jackson转换工具使用

ObjectMapper objectMapper = new ObjectMapper();

//json->java

Car car = objectMapper.readValue(json, Car.class);

//java->json

String json = objectMapper.writeValueAsString(car);

六、jQuery封装的Ajax

(1)使用格式

$.ajax({
    type:“请求方式”,
    url:“请求地址”,
    data:“请求参数”
,//参数是JSON格式的

// 例如数据类型设置为json,那么可以将json格式的字符串自动转换为js对象,及data会是一个js对象,如果服务器响应的是普通的字符串,会自动调用error中的函数
      dataType:"服务器返回的数据类型",       


    success:fundction(data){ //成功且完整响应自动调用的函数
           
        },
    error: function(){
//出现错误自动调用的函数
      
    }
})

(2)dataType:用来指定服务器返回来的数据类型,可选值有如下:

  • xml:表示服务器返回的是xml内容

  • html:表示服务器返回的是html文本内容

  • script:表示服务器返回的是script文本内容,及js内容

  • json:表示服务器返回的是json内容(重点)

  • jsonp:表示使用jsonp形式调用函数,早期我们用它来解决跨域问题

  • text:表示服务器返回的是纯文本字符串

 (3)固定请求方式

  • $.get(“请求地址”,“请求参数”,回调函数, 返回的数据类型)

  • $.post(“请求地址”,“请求参数”,回调函数, 返回的数据类型)

(4)固定请求方式和服务器返回的数据类型 

  • $.getJSON("请求地址", "请求参数", "回调函数")

  • $.getScript("请求地址", "回调函数")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值