首页 > 其他分享 >Ajax 什么是Ajax? Ajax的基本语法

Ajax 什么是Ajax? Ajax的基本语法

时间:2024-03-25 15:14:10浏览次数:34  
标签:基本 请求 request ajax 语法 Ajax POST 页面

Ajax

什么是Ajax?

AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)。

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

那么Ajax具有什么优点?

  • 异步交互: 客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。
  • 浏览器局部刷新: 在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。
    这也是Ajax最大的特点,在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容,这一特点给用户的感受是在不知不觉中完成请求和响应过程。

举例浏览器局部刷新,以GitHub注册页面举例:

输入邮箱地址,GitHub注册界面动态获取用户实时书写信息,整个页面并没有刷新,实时的跟后端确认并实时展示到前端,这就是局部刷新。

以往我们在前后端交互是发送请求的方式有哪些?

  • 浏览器地址栏输入url回车 ---GET请求
  • a标签href属性 ---GET请求
  • form表单 ---GET请求/POST请求
  • Ajax ---GET请求/POST请求
    其中from表单提交数据方式页面统一提交即同步交互,而Ajax使用JavaScript技术向服务器发送异步请求,不再需要刷新整个页面,只刷新页面中的部分内容,所有Ajax性能更高。

目前使用Ajax居多为jQuery封装之后的版本,所以在前端页面使用Ajax时需要确保导入了jQuery.

Ajax基本语法:

<script>
    //先给按钮绑定一个点击事件
    $('#btn').click(function (){
        //超后端发送Ajax请求
        $.ajax({
            //1.指定向那个后端发送ajax请求
            url:'',//不写就是向当前地址提交请求
            //2.请求方式需要指定
            type:'post', //不指定默认get,小写即可。
            //3.数据,自定义对象
            data:{'username':'junjie','password':123},
            //4.异步回调机制,回调函数:当后端返回结果是会自动触发,arg接收后端的返回结果
            success:function (args) {
              
            }
        })
    })
</script>

先举一个基本例子来演示Ajax:

页面上有三个input框:
	在前面两个框中输入数字,点击按钮,向后'g端发送ajax请求。
  后端计算出结果,再返回给前端动态展示到第三个input框中(整个过程页面不可以有刷新,也不能在前端计算)

前端页面:

<body>
<input type="text" id="d1">+
<input type="text" id="d2">=
<input type="text" id="d3">
<p>
    <button id="btn">点</button> <!--需要绑定点击事件-->
</p>
</body>
<script>
    //先给按钮绑定一个点击事件
    $('#btn').click(function (){
        //超后端发送Ajax请求
        $.ajax({
            //1.指定向那个后端发送ajax请求
            url:'',//不写就是向当前地址提交请求
            //2.请求方式需要指定
            type:'post', //不指定默认get,小写即可。
            //3.数据,自定义对象
            data:{'username':'junjie','password':123},
            //4.异步回调机制,回调函数:当后端返回结果是会自动触发,arg接收后端的返回结果
            success:function (args) {
              
            }
        })
    })
</script>

views.py: 后端

def ab_ajax(request):
    if request.method == 'POST':
        """
        用ajax向后端提交post请求时,也是在request.POST中能够拿到普通键值对
        输出: <QueryDict: {'username': ['junjie'], 'password': ['123']}>
        """
        print(request.POST)

    return render(request, 'index.html')

def ab_ajax(request):
    if request.method == 'POST':
        """
        用ajax向后端提交post请求时,也是在request.POST中能够拿到普通键值对
        <QueryDict: {'username': ['junjie'], 'password': ['123']}>
        """
        print(request.POST)
        i1 = request.POST.get('i1')
        i2 = request.POST.get('i2')
        # 由于拿到的数据类型是字符串形式。需要先转为整型才能在做逻辑运算。
        i3 = int(i1) + int(i2)
        return HttpResponse(i3)
    return render(request, 'index.html')

script>
    //先给按钮绑定一个点击事件
    $('#btn').click(function () {
        //超后端发送Ajax请求
        $.ajax({
            //1.指定向那个后端发送ajax请求
            url: '',//不写就是向当前地址提交请求
            //2.请求方式需要指定
            type: 'post', //不指定默认get,小写即可。
            //3.数据,自定义对象
            //获取input框中用户输入的值使用$('id').val(),jQuery书写方式
            data: {'i1': $('#d1').val(), 'i2': $('#d2').val()},
            //4.异步回调机制,回调函数:当后端返回结果是会自动触发,arg接收后端的返回结果
            success: function (args) {
                {#alert(args)#} //通过DOM操作动态渲染到第三个input输入框中
                console.log(typeof (args))  //string
                $('#d3').val(args) //接收JsonResponse数据对象,并自动反序列化。
            }
        })
    })
</script>

后端views.py

def ab_ajax(request):
    if request.method == 'POST':
        """
        用ajax向后端提交post请求时,也是在request.POST中能够拿到普通键值对
        <QueryDict: {'username': ['junjie'], 'password': ['123']}>
        """
        d = {'username':'junjie','age':666}
        return JsonResponse(d)
    return render(request, 'index.html')


针对后端如果使用HttpResponse返回的数据,回调函数不会自动反序列化

如果后端使用的是JsonResponse返回的数据,回调函数会自动反序列化

补充:

# 参数  代码发布项目还会涉及
dataType:'JSON'

当后端是以HttpResponse返回的json格式的数据
默认是不会自动反序列化的
	1.自己手动JSON.parse()
	2.配置dataType参数

标签:基本,请求,request,ajax,语法,Ajax,POST,页面
From: https://www.cnblogs.com/HeroZhang/p/18094400

相关文章

  • ajax 结合sweetalert实现二次确认效果,ajax批量插入数据:bulk_create()
    ajax结合sweetalert实现二次确认二次确认效果:http://lipis.github.io/bootstrap-sweetalert/<body><divclass="container-fluid"><h1class="text-center">数据展示</h1><divclass="row"><divclass=......
  • Ajax 发送json格式数据以及发送文件(FormData)和自带的序列化组件: serializers
    前后端传输数据的编码格式(contentType)get请求数据就是直接放在url?后面的url?usernmae=junjie&password=123...可以向后端发送post请求的方式form请求ajax请求前后端传输数据的编码格式urlencodedformdatajson研究form表单:默认的数据编码格式是(urlencod......
  • 【WPF应用13】WPF基本控件-DockPanel布局详解与示例
    引言WPF(WindowsPresentationFoundation)是微软.NET框架的一个组成部分,它用于构建桌面应用程序的用户界面。在WPF中,控件是构建用户界面的基本元素,而布局控件则负责安排其他控件的位置和大小。DockPanel是WPF中的一个布局控件,它允许您将子控件沿着边缘排列,类似于......
  • 【WPF应用12】基本控件-WrapPanel布局详解与示例
    在WindowsPresentationFoundation(WPF)中,WrapPanel是一个强大的布局控件,它允许子控件在空间不足时自动换行,提供了极大的灵活性。在本文中,我们将详细介绍WrapPanel的布局原理、使用方法以及在开发中的应用示例。1.WrapPanel控件的布局原理WrapPanel是WPF中的一种面板......
  • Kubectl cp 语法
    Kubectl cp语法kubectlcp<file-spec-src><file-spec-dest>[options]kubectlcp:用于pod和外部的文件交换,将文件和目录复制到容器或从容器复制到容器。-c,--container='':容器名称。如果省略,将选择荚中的第一个容器--no-preserve=false:复制的文件/目录的所有权和权限将......
  • 深度学习 - PyTorch基本流程 (代码)
    直接上代码importtorchimportmatplotlib.pyplotaspltfromtorchimportnn#创建dataprint("****CreateData****")weight=0.3bias=0.9X=torch.arange(0,1,0.01).unsqueeze(dim=1)y=weight*X+biasprint(f"NumberofXsamples:{len......
  • JavaScript初识及基本语法详解
    JavaScript是一种高级的脚本语言,它在Web开发中扮演着至关重要的角色,主要用于增强用户与HTML页面的交互过程。以下是JavaScript的一些基本概念和语法要点:简介:JavaScript是三大Web技术之一(HTML、CSS和JavaScript),它能使网页从静态变为动态互动,广泛应用于Web应用开发。控制HTML:Jav......
  • 物理层的基本协议,功能及设备
    物理层(或称物理层,Physical Layer)是计算机网络OSI模型中最低的一层。物理层规定:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性。简单的说,物理层确保原始的数据可在各种物理媒体上传输。局域网与广域网皆属第1、2层。物理层是OSI的第一层......
  • Linux软件安装与基本设置
    版本:Ubuntu20.04.6Linux基本设置点击查看代码sudoapt-getautoremoveopen-vm-toolssudoapt-getinstallopen-vm-tools-desktoprebootLinux软件安装Docker删除docker彻底删除卸载DockerEngine、CLI、containerd和DockerCompose软件包点击查看代码sud......
  • Day01Markdown简单语法
    Markdown学习标题空格+标题名字一级标题空格+标题名字二级标题字体helloworldhelloworldhelloworldhelloworld引用选择狂神说Java,走向人生巅峰分割线图片超链接点击跳转到狂神博客列表aabbccaabbcc表格名字性别生日张三男1997......