Ajax请求入门

异步提交 局部刷新

ajax不是一门新的技术并且有很多版本 我们目前学习的是jQuery版本(版本无所谓 本质一样就可以)


基本语法
$.ajax({
url:'', // 后端地址 三种填写方式 与form标签的action一致
type:'post', // 请求方式 默认也是get
data:{'v1':v1Val, 'v2':v2Val}, // 发送的数据
success:function (args) { // 后端返回结果之后自动触发 args接收后端返回的数据
$('#d3').val(args)
}
})

ajax实现简单计算器

正常提交表单时,会刷新整个页面,而ajax请求不会这样。ajax回调函数的参数会将视图函数的返回值捕获。然后继续执行ajax回调函数。

前端代码:



后端返回结果后自动触发下图函数,args接受后端返回的数据。



我们在函数内写一个警告框:



视图层代码:



当返回值是一个页面时,该页面也会被传到ajax函数内:



应该将输入框获取的值,写在点击事件的函数内:



也可以写失去焦点事件,输入框失去焦点自动发现ajax请求:

content_type

1.urlencoded
ajax默认的编码格式、form表单默认也是
数据格式 xxx=yyy&uuu=ooo&aaa=kkk
django后端会自动处理到request.POST中 2.formdata
django后端针对普通的键值对还是处理到request.POST中 但是针对文件会处理到request.FILES中 3.application/json
form表单不支持 ajax可以
<script>
$('#d1').click(function () {
$.ajax({
url:'',
type:'post',
data:JSON.stringify({'name':'jason','age':18}), // 千万不要骗人家
contentType:'application/json',
success:function (args) {
alert(args)
} })
})
</script>
后端需要从request.body中获取并自己处理

urlencode

针对表单提交数据:

发送普通文本时用request.POST可以接受。

发送文件用request.FILES可以接受。

django怎么知道什么数据用post接受什么数据用files接受?其实是我们发送表单时,提前告知了数据编码格式(注意这不是字符编码)。

ajax请求、表单请求的默认编码格式是urlencode:



也就是这样类似于键值对的数据:



这种格式的数据django会自动处理到request.POST中

fromdata

form表单提交文件时的编码格式是fromdata

对于这种编码格式的数据django会自动处理到request.FILES中

编码格式是怎么处理数据的依据。

再看以前的例子,对于提交文件的表单:



由于表单提交默认是urlencode编码格式,所以会把文件处理到post里面去了。

所以需要提前告知django,我们发送的是什么数据。

application/json

ajax支持第三种数据编码application/json。也就是传json字符串。

同时ajax也支持get,post之外的请求。

先要进行序列化:



回调函数:



点击按钮后查看视图层:



发现无论是POST还是FILES都无法获取到json数据。

json格式的数据 post files都拿不到 而是放在request.body。



所有的请求数据第一时间都是存在request.body。body内的数据经过处理之后给post、files等。

而json格式由于过于重要,django不会进行处理。

而是直接返回二进制。

request.body不是想看就能看的 只有json编码格式才能看。

反序列化查看json数据:

自定义request.JSON

我能不能自己写个request.JSON

专门用来获取json数据。



这里相当于我们给request对象添加了一个属性,我们人为的将数据存放在了request对象。在对象中新增了JSON这个名字。所以后续也可以通过request.JSON获取json字符串。

总结:websocket(大字典) django(request对象)对请求的数据进行了两次封装 drf会对请求数据继续第三次封装。我们可以通过点的方式给对象增加新的属性。

ajax发送Fromdata对象

ajax可以发送JavaScript的Fromdata对象。



这里的普通数据指的是form表单发送的那种键值对。

用对象发送数据:



此时就不用指定编码格式了!

添加固定配置:



最后写回调函数:



这样通过Ajax请求传递到后端的数据,普通数据会在request.POST里,文件数据会在request.FILES里:

Ajax请求 content_type ajax发送Fromdata对象的更多相关文章

  1. 手动(原生ajax)和自动发送ajax请求 伪ajax(Ifrname)

    自动发送  ---> 依赖jQuery文件 实例-->GET请求: function AjaxSubmit() { $.ajax({ url:'/data', type:"GET ...

  2. PHP处理Ajax请求与Ajax跨域

    PHP判断是否为Ajax请求 我们知道,在发送ajax请求的时候,可以通过XMLHttpRequest这个对象,创建自定义的header头信息, 在jquery框架中,对于通过它的$.ajax, $. ...

  3. ajax请求返回json字符串/json对象 处理

    1. 返回json字符串如何处理 $.ajax({ url:xxx, success:function(date){ }, error:function(){ } }); 通过最原始的返回: Prin ...

  4. ajax 请求json数据中json对象的构造获取问题

    前端的界面中,我想通过ajax来调用写好的json数据,并调用add(data)方法进行解析,请求如下: json数据如下: { “type”:"qqq", "lat&q ...

  5. Ajax请求($.ajax()为例)中data属性传参数的形式

    首先定义一个form表单: <form id="login" > <input name="user" type="text&quo ...

  6. Jquery发送ajax请求以及datatype参数为text/JSON方式

    Jquery发送ajax请求以及datatype参数为text/JSON方式 1.方式一:datatype:'text' 2.方式二:datatype:'JSON' 3.使用gson-1.5.jar包 ...

  7. 原生JS发送Ajax请求、JSONP

    一.JS原生Ajax Ajax=异步Javascript+XML: ajax是一种数据请求的方式,不需要刷新整个页面.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. ajax的核心 ...

  8. javascript版Ajax请求

    什么是Ajax请求,Ajax也就是“Asynchronous JavaScript and XML”(异步JavaScript和XML),无刷新数据读取.能减少流量的消耗,也提高了浏览的流畅性,给用户 ...

  9. Ajax请求(二)--JQuery的Ajax请求方法

    JQuery库的Ajax请求的几种方法: 1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中. 参数含义: url (String ...

  10. SpringMVC处理ajax请求的注意事项

    .首先要知道ajax请求的核心是JavaScrip对象和XmlHttpRequest,而浏览器请求的核心是浏览器 ajax请求 浏览器请求 场景一:使用ajax获取session中的user 从上图可 ...

随机推荐

  1. WebGL初接触

    有感于在不少jd中看到关于WebGL的内容,想起来之前在高程中还没看完的canvas,就匆匆把剩余的一点看完了,高程中的内容还是皮毛,就属于很基础的.概念性的东西. WebGL 画布的3D上下文.不是 ...

  2. CF1592C. Bakry and Partitioning

    原题链接:CF1592C. Bakry and Partitioning 题意: 给定一个\(n\)个点,\(n - 1\)条边的树,并且每个点都有权值\(w_i\),让你最少割掉一条边最多割掉\(k ...

  3. 通过Spring MVC 实现 Restful 风格请求⽀持

    通过Spring MVC可以很方便地实现Restful风格的请求支持.Restful风格的请求是一种基于HTTP协议的轻量级的Web服务架构风格,它通过HTTP的GET.POST.PUT.DELETE ...

  4. 京东面试:说说Cookie、Session和Token的区别?

    东子作为目前传统电商三巨头之一(其他还有阿里巴巴和拼多多),其面试题的难度也中规中矩,总体来说没有其他两家面试难度高,当然薪资也没有其他两家薪资高. 其中拼多多的薪资最为离谱,尤其是前几年,听说挖同行 ...

  5. 用最清爽的方式开发dotNet

    用最清爽的方式开发dotNet 不管是官方自带模板还是其他开源搞的,总是一来一大堆,如果你也嫌弃这些过于臃肿,不如看看我这个方式 前提 假设我要做一个简单的api 方式 想到清爽,那肯定是简单方便,脑 ...

  6. HDU 4787 GRE Revenge

    Now Coach Pang is preparing for the Graduate Record Examinations as George did in 2011. At each day, ...

  7. 基于.NetCore开发博客项目 StarBlog - (30) 实现评论系统

    前言 时隔五个月,终于又来更新 StarBlog 系列了~ 这次是呼声很大的评论系统. 由于涉及的代码量比较大,所以本文不会贴出所有代码,只介绍关键逻辑,具体代码请同学们自行查看 GitHub 仓库. ...

  8. 文档理解的新时代:LayOutLM模型的全方位解读

    一.引言 在现代文档处理和信息提取领域,机器学习模型的作用日益凸显.特别是在自然语言处理(NLP)技术快速发展的背景下,如何让机器更加精准地理解和处理复杂文档成为了一个挑战.文档不仅包含文本信息,还包 ...

  9. 从零开始用 Axios 请求后端接口

    对于前端同学来说,请求后端接口是一个非常通用的东西.在十几年前的时候,我们还用 Ajax 去请求后端接口.但在 2023 年的今天,很多框架都很成熟了,我们有了更加快捷的方式 -- Axios 框架. ...

  10. MinIO客户端之diff

    MinIO提供了一个命令行程序mc用于协助用户完成日常的维护.管理类工作. 官方资料 mc diff 检查指定桶内对象清单的差异,注意不比较对象内容的差异,命令如下: ./mc diff local1 ...