Ajax的get请求

本文详细介绍了使用AJAX GET请求的基本步骤与应用实例,包括如何创建异步对象、设置请求及回调函数等,并通过具体案例展示了如何实现带有参数的GET请求及简易用户注册功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AJAX的操作步骤

GET请求

  1. 创建 xhr 对象
  2. 创建请求 - open()
  3. 设置回调函数 - onreadystatechange
    1.判断状态
    2.接收响应
    3.业务处理
  4. 发送请求 - send(null)

GET请求 示例

以下代码中显示主要功能:

1.  a 标签 跳转到新的页面(....../ajax/ajax/02-server/)显示 "这是server02的响应"
2.  button 显示按钮 在当前页面显示 "这是server02的响应"
3. 配合下面的Django项目测试异步get请求呈现和 链接 

(https://blog.youkuaiyun.com/weixin_45179798/article/details/96967053)[创建异步对象方法]

html 界面

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../../../static/js/common.js"></script>
    <script src="../../../static/js/exer_get.js"></script>

</head>
<body>
<button onclick="btnShow()">显示</button>
<a href="/ajax/ajax/02-server">显示</a>
<div id="show"></div>
</body>
</html>

views视图的处理

def server02_views(request):
    return HttpResponse("这是server02的响应内容")

js文件

		// 创建异步对象
function createXhr() {

    if (window.XMLHttpRequest) {
        var xhr = new XMLHttpRequest();
        //console.log(xhr);
        console.log('浏览器支持: XMLHttpRequest')
    } else {
        var xhr = new ActiveXObject("Microsoft.XMLHTTP");
        //console.log(xhr);
        console.log('浏览器支持ActiveXObject("")')
    }
    return xhr
}


//创建 ajax 请求
function btnShow() {
    //1.创建xhr 调用的函数返回值
    var xhr = createXhr();
    //2.创建请求
    xhr.open("get", "/ajax/02-server", true);
    //3.设置回调函数
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
            // 接收服务器响应的数据
            var res = xhr.responseText;
            document.getElementById("show").innerHTML = res;
        }
    };
    //4. 发送请求
    xhr.send(null);

}

效果展示

Ajax 异步请求:
在这里插入图片描述

a 标签跳转

在这里插入图片描述

Ajax GET请求 附带参数请求

请求路由的设置

    url(r"03-ajax-get-params/$", views.getparams_views),
    url(r"03-server/$", views.server03_views),

views.py 界面请求函数处理

def getparams_views(request):
    return render(request, 'Ajax/03-ajax-get-params.html')


def server03_views(request):
    # 接收前段传递过来的两个参数
    name = request.GET['name']
    age = request.GET['age']
    # 响应数据
    s = "姓名:%s,年龄%s" % (name, age)
    return HttpResponse(s)

html和js中处理

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Title</title>

    <script>
        // 创建异步对象
        function createXhr() {

            if (window.XMLHttpRequest) {
                var xhr = new XMLHttpRequest();
                //console.log(xhr);
                console.log('浏览器支持: XMLHttpRequest')
            } else {
                var xhr = new ActiveXObject("Microsoft.XMLHTTP");
                //console.log(xhr);
                console.log('浏览器支持ActiveXObject("")')
            }
            return xhr
        }

        function btnShow() {
            // 创建xhr
            var xhr = createXhr();
            // 创建请求(带参数)
            var url = "/ajax/03-server?name=wangwc&age=30";
            xhr.open("get", url, true);
            // 设置回调参数
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    document.getElementById("show").innerHTML = xhr.responseText;
                }
            };
            // 发送请求
            xhr.send(null);
        }

    </script>
</head>
<body>


<button onclick="btnShow()">显示</button>
<div id="show"></div>

</body>
</html>

传参效果
在这里插入图片描述

Ajax GET请求 实现简易注册示例

在这里插入图片描述
请求路由的设置

    url(r"04-register/$", views.register_views),
    url(r"04-checkuname/$", views.checkuname_views),

模型类示例 models.py 需要迁移设置数据库

from django.db import models


# Create your models here.

class Users(models.Model):
    uname = models.CharField("用户名称", max_length=30)
    upwd = models.CharField("用户密码", max_length=30)
    uemail = models.EmailField("电子邮箱")
    nickname = models.CharField("用户昵称", max_length=30)

views.py 界面请求函数处理,数据库和模型需要自己配置

def register_views(request):
    return render(request, "Ajax/04-register.html")


def checkuname_views(request):
    # 接受前段传递的参数
    uname = request.GET['uname']

    # 判断uname在User实体中是否存在[查询操作]
    user = Users.objects.filter(uname=uname)
    # 根据查询结果给出响应
    if user:
        return HttpResponse(1)
    return HttpResponse(0)


# 用户注册处理
def reguser_views(request):
    # 接收前段传递的数据
    uname = request.GET["uname"]
    upwd = request.GET["upwd"]
    uemail = request.GET["uemail"]
    nickname = request.GET["nickname"]
    # 通过实体类实现增加操作(通过异常来处理增加失败的问题)
    try:
        Users.objects.create(uname=uname, upwd=upwd, uemail=uemail, nickname=nickname)
        return HttpResponse(1)
    except Ellipsis as ex:
        print(ex)
        return HttpResponse(0)


html和js中处理

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        // 创建异步对象
        function createXhr() {

            if (window.XMLHttpRequest) {
                var xhr = new XMLHttpRequest();
                //console.log(xhr);
                console.log('浏览器支持: XMLHttpRequest')
            } else {
                var xhr = new ActiveXObject("Microsoft.XMLHTTP");
                //console.log(xhr);
                console.log('浏览器支持ActiveXObject("")')
            }
            return xhr
        }


    </script>
    <script src="../../../static/js/jquery-1.11.3.js"></script>
    <script>
        $(function () {
            /*
            * 为 #uname 绑定 blur 事件
            * */
            $('#uname').blur(function () {
                // 创建xhr
                var xhr = createXhr();
                // 创建请求 - /ajax/04-checkuname
                var uname = $("#uname").val();
                var url = '/ajax/04-checkuname?uname=' + uname;
                xhr.open("get", url, true);
                // 设置回调函数
                xhr.onreadystatechange = function () {
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        //$("#uname-tip").html(xhr.responseText);
                        if (xhr.responseText == "1") {
                            $('#uname-tip').html("The user name already exists")
                        } else {
                            $('#uname-tip').html("Available user name")
                        }
                    }
                };

                // 发送请求
                xhr.send(null);

            });


            /*为btnReg 绑定事件完成注册*/
            $("#btnReg").click(function () {
                // 1 . 创建异步对象xhr
                var xhr = createXhr();
                // 2 创建请求
                var uname = $("#uname").val();
                var upwd = $("#upwd").val();
                var uemail = $("#uemail").val();
                var nickname = $("#nickname").val();
                var url = "/ajax/04-reguser?uname="
                    + uname + "&upwd="
                    + upwd + "&uemail="
                    + uemail + "&nickname="
                    + nickname;
                console.log(url);
                xhr.open("get", url, true);
                // 3.设置回调函数
                xhr.onreadystatechange = function () {
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        if (xhr.responseText == "1") {
                            alert("注册成功");
                        } else {
                            alert("注册失败");
                        }
                    }
                };
                //4.发送请求
                xhr.send(null)

            });


        });
    </script>
</head>
<body>
<div>
    <p>
        用户名称:
        <input type="text" id="uname">
        <span id="uname-tip"></span>
    </p>
    <p>
        用户密码: <input type="password" id="upwd">
    </p>
    <p>
        电子邮箱: <input type="email" id="uemail">
    </p>
    <p>
        用户昵称: <input type="text" id="nickname">
    </p>
    <p>
        <input type="button" value="注册" id="btnReg">
    </p>

</div>
</body>
</html>

效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值