【Ajax】jQuery中的Ajax方法(一)

jQuery 对 Ajax 做了大量的封装,我们使用起来也较为方便,不需要去考虑浏览器兼容性。
对于封装的方式,jQuery 采用了三层封装:
最底层的封装方法为:$.ajax()
而通过这层封装了第二层有三种方法:.load()$.get()$.post()
最高层的方法是:$.getScript()$.getJSON()

1、.load()方法

load(url [,data] [,callback]); 方法有三个参数:

  1. url (必须请求 html 文件的 url 地址 ,参数类型为 String)

  2. data (可选,发送到服务器的 {key:value,key2:value} 数据,参数类型为 Object)。

  3. callback (可选,成功或失败的回调函数,参数类型为函数 Function)。回调函数可以传递三个可选参数:responseText(请求返回)、textStatus(请求状态)、XMLHttpRequest(XMLHttpRequest对象)。
    这个回调函数是在请求完成后触发的,和请求成功失败没关系

  4. load()方法是将一个页面的内容添加到指定的DOM的元素下,所以在js中调用load() 方法时应该是$("#id").load(url)DOM中的某个节点元素而不是$.load(url);

  5. load()方法传递方式是按照data参数来决定的,如果没有参数传递则使用get方式的,如果有参数传递则是使用post方式

Load方法测试:
[Load.html]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>  
     <div class="comment">
        <p>
            <a href="#" class="username">张三</a>
            <span class="location">[北京市网友]</span>
        </p>

        <p class="contentTxt">一楼给度娘</p>
    </div>

    <div class="comment">
        <p>
            <a href="#" class="username">李四</a>
            <span class="location">[山东省济南市网友]</span>
        </p>

        <p class="contentTxt">没抢到沙发</p>
    </div>

    <div class="comment">
        <p>
            <a href="#" class="username">王五</a>
            <span class="location">[河南省郑州市网友]</span>
        </p>

        <p class="contentTxt">顶顶顶顶顶</p>
    </div>
</body>
</html>

然后创建load.html,添加一个button按钮触发Ajax事件,将加载进来的HTML内容存放到id为“Text”的元素中。

[TestLoad.html]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<script type="text/javascript" src="../js/jquery-3.3.1.js"></script>
<script type="text/javascript">
    $(function() {
        $("#btn").click(function() {
            $("#Text").load("Load.html");
        });
    });
</script>
<body>
    <input type="button" id="btn" value="load评论">
    <div>最新评论:</div>
    <div id="Text"></div>
</body>
</html>
测试结果:

这里写图片描述

2、$.get()$.post()

.load()方法是局部方法,因为他需要一个包含元素的 jQuery 对象作为前缀。而 .get()  . g e t ( ) 和 .post()是全局方法,无须指定某个元素。对于用途而言,.load()适合做静态文件的异步获取,而对于需要传递参数到服务器页面的, .get()  . g e t ( ) 和 .post()更加合适。
$.get()方法有四个参数,前面三个参数和.load()一样,多了一个第四参数 type,即服务器返回的内容格式:包括 xml、html、script、json、jsonp 和 text。第一个参数为必选参数后面三个为可选参数。

$.get()结构为:

$.get(url [, data] [, callback] [, type])
  • url (String):请求的服务器端资源的url。
  • data (Object):以key/value的形式构造查询字符串追加到url。
  • callback (Function):在请求成功(success)时被调用。将请求结果和状态传递给该方法。
  • type (String):服务器端返回内容的格式。
  • get请求的回调函数只有两个参数即请求返回的信息和请求状态
  • 只有请求成功后才会调用回调函数而不像load方法不管成功还是失败都会调用回调函数!
  • Type参数,定义了请求返回的数据格式,按照自己需求进行定义支持如下几种格式:xml、html、script、json、text!
    一般情况下 type 参数是智能判断,并不需要我们主动设置,如果主动设置,则会强行按照指定类型格式返回。

$.get()方法测试:

[TestGet.html]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<script type="text/javascript" src="../js/jquery-3.3.1.js"></script>
<script type="text/javascript">
    $(function () {
        $("#send").click(function () {
            // 点击按钮触发get请求
            $.get("get.jsp", {
                // 向服务器传递参数,encodeURI进行完整编码
                username: encodeURI($("#username").val()),
                location: encodeURI($("#location").val()),
                contentTxt: encodeURI($("#contentTxt").val())
            }, function (data, textStatus) {
                //alert(textStatus);   // 返回请求状态
                //alert(decodeURI(data)); // 返回请求的状态
                // 将返回的数据添加到id为“resText”的元素中
                $("#resText").html(decodeURI(data));
            })
        });
    })
</script>

<body>
    <form id = "form1">
    <p>添加评论:</p>

    <p>姓名:<input type="text" name="username" id="username"></p>

    <p>位置:<input type="text" name="location" id="location"></p>

    <p>内容:<textarea name="contentTxt" id="contentTxt"></textarea></p>

    <p><input type="button" id="send" value="提交"></p>

</form>
<div>最新评论:</div>
<div id="resText"></div>

</body>
</html>

接下来构造get.jsp,模拟服务器处理请求并返回数据:

[get.jsp]
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <%
      String username = request.getParameter("username");
      String location = request.getParameter("location");
      String content = request.getParameter("contentTxt");

      out.println("<div class='comment'><a href='#' class='username'>" + username +
                  "</a><span class='location'>" + location +
                  "</span></p><p class='contentTxt'>" + content + "</p></div>");
    %>
</body>
</html>
测试结果:

这里写图片描述

$.post()方法的使用和$.get()基本上一致,他们之间的区别也比较隐晦,基本都是背后的
不同,在用户使用上体现不出。具体区别如下:

  1. GET 请求是通过 URL 提交的,而 POST 请求则是 HTTP 消息实体提交的;
  2. GET 提交有大小限制(2KB),而 POST 方式不受限制;
  3. GET 方式会被缓存下来,可能有安全性问题,而 POST 没有这个问题;
  4. GET 方式通过$.get()获取,POST 方式通过$.post()获取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值