微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

py ajax的学习 day 57

今日内容学习

  • ajax简介
  • ajax提交数据的多种类型
  • ajax结合第三方组件实现删除功能的二次确认

ajax简介

  ajax技术相当于异步js和xml AJAX 它不是新的编程语言 而是一种使用现有标准的新方法 
  ajax是一种用于创建快速动态网页的技术 通过在后台与服务器进行少量数据交换 ajax 可以使网页实现异步更新 
'这意味着可以在不重新加载整个网页的情况下 对网页的某部分进行更新' (这一特点给用户的感受是在不知不觉中完成请求和响应过程)
  ajax在javascript中使用ajax技术 调用浏览器提供的XMLHttpRequest对象进行请求访问 向服务器发送的请求是异步的 此时浏览器没有丢失任何数据 用户仍然可以对页面进行操作
  页面不刷新的情况下可以与后端进行数据交互
# 同步交互
  客户端发出一个请求后 需要等待服务器响应结束后 才能发出第二个请求
# 异步交互
  客户端发出一个请求后 无需等待服务器响应结束 就可以发出第二个请求
# 典型特征    
  异步提交 局部刷新
# eg:
  码云用户注册 无需点击按钮内部也可完成数据交互
  我们学习ajax直接使用jQuery封装之后的版本(语法更加简单)   使用ajax的前提必须要引入jQuery文件

ajax前言

学习ajax一定要能够发现与form表单提交数据的区别
  ajax提交数据页面不用刷新 原始数据还在 处理数据的过程中不影响页面其他操作 '异步'
  form表单提交数据页面刷新 原始数据不在 并且处理数据的过程中无法做其他操作

  页面上有三个input框和一个提交按钮 前两个框输入数字 点击按钮 最后一个框里面展示数字的和 并且页面不能刷新
  $('#btn').click(function () {
            // 获取两个框里面的数据
            let i1Val = $('#i1').val();
            let i2Val = $('#i2').val();
            // 发送ajax请求传输数据
            $.ajax({
                url:'',  // 不写认就是当前页面所在的地址
                type:'post', // 指定当前请求方式
                data:{'i1':i1Val,'i2':i2Val},  // 请求携带的数据
                success:function (args) {  // 异步回调函数 后端有回复自动触发
                    $('#i3').val(args)
                }
            })
        })

前后端传输数据编码格式

"""
请求体中携带编码格式
  Content-Type:...
django针对不同编码方式对应的数据格式会采用不同的处理策略
"""
form表单认发送的编码格式
  Content-Type: application/x-www-form-urlencoded
  数据格式:username=jason&password=123
  django后端会自动处理到:request.POST
form表单发送文件
  Content-Type: multipart/form-data
  数据格式:隐藏无法查看
  django后端会自动处理:request.POST  request.FILES
ajax认的编码格式
  Content-Type: application/x-www-form-urlencoded
  数据格式:username=jason&password=123
  django后端会自动处理到:request.POST
# post请求数据的编码格式
"""
get请求数据是直接放在url后面的
url?username=egon&age=12
"""
# 朝后端发送post请求的方式
"""
1、form表单
2、ajax请求
"""

"""
前后端传输数据的三种格式
urlencoded
formdata
json
"""

# form表单
	认的数据编码格式是urlencoded(可以在request headers中找到content-type)
	django后端针对符合urlencoded编码格式的数据都会自动帮你解析封装到request.POST中
    
如果把编码格式改成formdata,那么针对普通的键值对还是剖析到request.POST中而将文件解析到request.FILES中

form表单不能发送json数据的


# ajax请求
	认编码格式也是urlencoded
    数据格式:uname=16600000016&pword=123
    django后端针对符合urlencoded编码格式的数据都会自动帮你解析封装到request.POST中

ajax发送json格式数据

# form表单是无法发送json格式数据的
ajax发送的数据类型必须要跟数据的编码格式一致 
    编码格式是urlencoded 
    数据格式就应该是username=jason&password=123
    但是你却发送了json格式数据
"""
	django后端真多json格式的数据不会做任何的处理 就在request.body内
"""
$('#d1').click(function () {
        $.ajax({
            url:'',
            type:'post',  // 不写认也是get请求
            contentType:'application/json',  // 不写认是urlencoded编码
            data:JSON.stringify({'name':'jason','pwd':123}),  // 序列化方法
            success:function (args) {
            }
        })
    })

ajax发送json数据

$.ajax({
            // 1. 指定数据提交的路径
            url: '/index/',

            // 2. 指定提交方式
            type: 'post',

            // 3. 传入的数据
            {#data: {'d1': d1, 'd2': d2},#}
            data: JSON.stringify({'d1': d1, 'd2': d2}),
            contentType:'application/json', // 指定编码格式
                )}

ajax携带文件数据

$("#d1").click(function () {
        // 需要利用内置js内置对象FormData
        let myFormData = new FormData();
        // 对象添加普通数据
        myFormData.append('username',$('#name').val())
        myFormData.append('password',$('#pwd').val())
        // 对象添加文件数据
        myFormData.append('my_file',$('#file')[0].files[0])
        // 发送ajax请求
        $.ajax({
            url:'',
            type:'post',
            data:myFormData,
            // 携带文件必须要指定的两个参数
            contentType:false,
            processData:false,
            success:function (args) {
                // 处理异步回调返回的结果
            }
        })
    })

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐