首页 > 其他分享 >56.Ajax操作

56.Ajax操作

时间:2024-07-02 19:53:53浏览次数:1  
标签:get 56 request Ajax num result 操作 data

【一】Ajax

1)简介

  • Ajax:异步的Javascript和XML,即JavaScript语言与服务器进行异步交互,传输的数据为XML

  • 可用与服务器交换数据并更新部分网页内容

  • 同步交互:

    • 客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求
  • 异步同步:

    • 客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求

2)精髓

  • 异步提交/局部刷新
    • 动态获取用户名,实时跟后台确认并将结果展示给前端

【二】Ajax使用

1)普通

# 引入js与boot使用Ajax
<script src="{% static 'js/jquery.min.js' %}"></script>
<link rel="stylesheet" href="{% static 'plugins/Bootstrap3/css/bootstrap.min.css' %}">
<script src="{% static 'plugins/Bootstrap3/js/bootstrap.min.js' %}"></script>
# 前端
<h1>Ajax实现前后端交互 —— 计算</h1>
<div>数字一 <input type="text" id="num_1"></div>
<div>数字二 <input type="text" id="num_2"></div>
<div>结果 <input type="text" id="result"></div>
<div>
    <button id="btn_add">点击计算</button>
</div>

<script>
    {#页面加载完毕时触发#}
    $(document).ready(
        {#绑定按键,点击触发#}
        $('#btn_add').click(function () {
            var num_one = $('#num_1').val()
            var num_two = $('#num_2').val()
            {#启用Ajax#}
            $.ajax({
                // 提交的目标地址
                url: "",
                // 请求方式(post,get)
                type: "post",
                // 请求体数据
                data: {'num_1': num_one, 'num_2': num_two},
                // 响应函数
                success: function (res) {
                    $('#result').val(res)
                }
            })
        })
    )
</script>
# 后端(直接返回字符串)
class Ajax_1(View):
    def get(self, request, *args, **kwargs):
        return render(request, 'Ajax_1.html', locals())

    def post(self, request, *args, **kwargs):
        data = request.POST
        print('data:',data)
        # data: < QueryDict: {'num_1': ['1'], 'num_2': ['4']} >
        num_1 = request.POST.get('num_1')
        num_2 = request.POST.get('num_2')
        result = int(num_1) + int(num_2)
        print(result)
        # 3
        return HttpResponse(result)

2)升级

# 前端
<h1>Ajax实现前后端交互 —— 进阶:json模块</h1>
<div>数字一 <input type="text" id="num_1"></div>
<div>数字二 <input type="text" id="num_2"></div>
<div>结果 <input type="text" id="result"></div>
<div>
    <button id="btn_add">点击计算</button>
</div>

<script>
    $(document).ready(
        $('#btn_add').click(function () {
            let numberOne = $('#num_1').val()
            let numberTwo = $('#num_2').val()
            $.ajax({
                url: '',
                type: 'post',
                data: {'num_1': numberOne, 'num_2': numberTwo},
                success:function (res) {
                    console.log(res, typeof res)
                    alert(res.message)
                    $('#result').val(res.result)
                }
            })
        })
    )
</script>
#后端(返回字典)
class Ajax_2(View):
    def get(self, request, *args, **kwargs):
        return render(request, 'Ajax_2.html', locals())

    def post(self, request, *args, **kwargs):
        data = request.POST
        print('data:', data)
        # data: < QueryDict: {'num_1': ['1'], 'num_2': ['2']} >
        num_1 = request.POST.get('num_1')
        num_2 = request.POST.get('num_2')
        result = int(num_1) + int(num_2)
        data = {'result': result, 'message': '计算成功'}
        print(data)
        # {'result': 3, 'message': '计算成功'}
        return JsonResponse(data)

3)进阶

1.form表单传递数据的格式

# json格式
<form action="" method="post" enctype="text/plain"></form>
# 只能传递键值数据,无法传递文件数据
<form action="" method="post" enctype="application/x-www-form-urlencoded"></form>
# 可传输键值对数据,文件数据作为单独的处理对象
<form action="" method="post" enctype="multipart/form-data"></form>

2.修改编码格式

$.ajax({
	...
	// 修改当前请求数据的编码格式
    contentType: "application/json",
	...
})

3.Ajax携带文件数据

# 前端
<h1>Ajax实现前后端交互 —— 进阶:携带文件数据</h1>
<div>text:<input type="text" id="text"></div>
<div>文件传输:<input type="file" id="file"></div>
<div>
    <button id="btn">提交数据</button>
</div>

<script>
    $(document).ready(
        $('#btn').click(function () {
            // 创建一个formData对象
            var formData = new FormData()
            // 获取键值对数据,并将数据添加到formDate对象中
            let text = $('#text').val()
            let file_obj = $('#file')[0].files[0]
            formData.append('text', text)
            formData.append('file_obj', file_obj)
            $.ajax({
                // 提交的目标地址
                url: "",
                // 请求方式
                type: "POST",
                //【3】请求体数据
                data: formData,
                // 【3.1】传递文件数据的时候
                // 需要修改当前请求数据的编码格式
                // 不需要使用任何的编码格式 原因是 formData 对象会自动帮我们编码
                contentType: false,
                // 修改当前是请求的限制类型
                // 告诉浏览器你不要对我的数据进行任何处理操作
                processData: false,
                // 响应函数
                success: function (res) {
                    alert(res.message)
                }
            })
        })
    )
</script>
# 后端
class Ajax_3(View):
    def get(self, request, *args, **kwargs):
        return render(request, 'Ajax_3.html', locals())

    def post(self, request, *args, **kwargs):
        text = request.POST.get('text')
        file_obj = request.FILES.get('file_obj')
        print(file_obj, type(file_obj))
        # 0528db72-2b1a-4af7-87d8-9d0bb613a239.png
        # <class 'django.core.files.uploadedfile.InMemoryUploadedFile'>

        # 文件的二进制
        img_obj = file_obj.read()
        data = {"code": 200, 'message': '上传成功'}
        return JsonResponse(data)

【三】request方法判断ajax

request.is_ajax()
  • 返回当前请求是否是ajax请求,返回布尔值
print(request.is_ajax())

# 正常浏览器网址回车提交的是 GET 请求 - 结果是False
# 当我们发送ajax请求后 - 结果是True

【三】二次弹窗插件

1)layer

# https://www.bootcdn.cn/
# https://www.bootcdn.cn/layer/
# https://layui.dev/2.7/layer/

2)layui

# https://layui.dev/docs/2/layer/

3)sweetalert

# https://www.bootcdn.cn/sweetalert/
# https://sweetalert.js.org/

标签:get,56,request,Ajax,num,result,操作,data
From: https://www.cnblogs.com/Mist-/p/18280447

相关文章

  • java操作hbase查询数据 java操作hbase查询数据库
    java操作hbase查询数据java操作hbase查询数据库HBasejavaAPI访问HBase数据库登录后复制packagecom.hunan.hbase_options;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.;importorg.apache.hadoop.hbase.client.;importorg.apache.had......
  • MySQL表的操作
    文章目录MySQL表的操作1、创建表2、创建表案例3、查看表结构4、修改表4.1、修改表结构4.2、表中添加字段4.3、表中删除字段4.4、修改表名4.5、修改字段名5、删除表MySQL表的操作1、创建表语法:[]内容可省略createtable表名( 列名1列类型1[notnull][defa......
  • NWIFI.SYS 的底层原理主要围绕着操作系统驱动程序模型的实现,确保无线网络适配器与操作
    NWIFI.SYS是一个Windows操作系统中的驱动程序文件,其底层原理涉及操作系统与硬件之间的交互和数据处理。以下是其底层原理的一些关键点:驱动程序功能:NWIFI.SYS主要负责管理和控制无线网络适配器。它通过操作系统提供的驱动程序接口(DriverInterface)与硬件通信,执行一系列操作,......
  • 在多线程并发操作中处理大量文件时,以下是一些关键的底层原理和技术:
    在多线程并发操作中处理大量文件时,以下是一些关键的底层原理和技术:1.文件句柄管理每个线程需要独立地管理文件句柄,文件句柄是操作系统提供的用于标识和访问文件的资源。在Windows环境下,使用CreateFile函数可以打开文件并获得文件句柄。每个文件句柄具有其自己的上下文和状态,......
  • 在Windows操作系统中,与文件系统进行交互主要通过一系列的API函数来实现,这些函数包括底
    操作文件系统API与操作系统的文件系统进行交互,涉及到底层的文件系统操作和文件属性管理。不同的操作系统提供了不同的API和机制来执行这些操作,但基本的原理和流程大致相似。文件系统API的基本操作1.文件时间戳(创建时间、修改时间、访问时间)创建时间(CreationTime):表示文件被创......
  • WinNTSetup 使用教程 进行 Windows 操作系统的安装和配置; WinNTSetup 进行高级操作和
    WinNTSetupv5.3.5.2-InstallWindowsfromUSB-MSFNMyFiles(mediafire.com)WinNTSetup是一个强大的Windows安装工具,主要用于在Windows操作系统中安装或重新安装Windows。以下是一个初级使用教程的大纲,帮助您了解如何使用WinNTSetup进行操作系统的安装和配置:1.准备......
  • ADS1256芯片说明
    本篇文章先总结一下24位的8通道24bit高精度采集的24位ADS1256,本篇文章不是纯粹的datasheet的抄袭,而是datasheet的总结,高度概括,以及对我们编程有用的思路,我大概看了一下网上流传的版本,大多数都是STM32,另外有一份是verilog不知道是谁写的,各个网都有,它是多通道采集,仅仅使用了一种模式......
  • steam游戏商城怎么共享游戏给好友?最详细的操作方法介绍
    在Steam平台上共享游戏给好友,实际上是通过Steam的家庭图书馆共享功能实现的。这允许你在一个家庭内与最多五位家庭成员共享你的游戏库,但他们必须使用同一台电脑。请注意,你不能直接将游戏共享给不在同一物理位置的好友。以下是启用家庭图书馆共享的步骤:1.登录Steam:首先,确保你......
  • vim学习笔记——三种基本模式和相关操作
    vim的三种模式一般模式以vim打开一个文件就直接进入一般模式了。在这个模式中,你可以使用hjkl按键移动光标,也可以使用删除字符或删除整行来处理文件内容,也可以使用复制粘贴处理文件内容。编辑模式在一般模式中按下A,a,I,i,O,o,R,r任何一个按键,就可以进入编辑模式,在界面左下方会......
  • 搭建sftp并且保证普通用户有权限操作对应文件
    创建SFTP用户组为SFTP用户创建一个专用组:groupaddsftpusers创建SFTP用户创建SFTP用户splsz并将其添加到sftpusers组,同时指定用户的主目录和禁止shell访问:useradd-gsftpusers-s/sbin/nologinsplszpasswdsplsz创建目录结构sudomkdir-p/home/zhangqiang/davinci/......