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. promise时效架构升级方案的实施及落地

    一.项目背景 为什么需要架构升级 promise时效包含两个子系统:内核时效计算系统(系统核心是时效计算)和组件化时效系统(系统核心是复杂业务处理以及多种时效业务聚合,承接结算下单黄金流程流量),后者 ...

  2. 一行代码解决IE停用后无法继续使用IE弹窗功能的问题

    微软在2023年2月14日通过Edge浏览器更新,彻底封死IE.Windows Update中没有记录.开始菜单中的IE以及桌面IE图标双击自动打开Edge,默认程序设置了IE也没有任何效果,仅能通过 ...

  3. 数据结构(C语言版 第2版)课后习题答案全集 严蔚敏

    有的小伙伴在网上奋力的找 严蔚敏版 第2版 数据结构 的始终无果,那么我这里就整理好,放在同名公众号中了,也可扫文章末尾的二维码直达公众号,回复数据结构的关键词即可拿到.

  4. 文心一言 VS 讯飞星火 VS chatgpt (149)-- 算法导论12.2 4题

    五.用go语言,证明:如果一棵二叉搜索树中的一个结点有两个孩子,那么它的后继没有左孩子,它的前驱没有右孩子. 灵捷3.5 . 文心一言: 为了证明这个性质,我们首先需要明确二叉搜索树(BST)的定义和 ...

  5. YOLO: Real-Time Object Detection 遇到的问题

    YOLO: Real-Time Object Detection 官方介绍的方法安装好了yolo之后,然后使用命令: ./darknet detect cfg/yolov3.cfg yolov3.we ...

  6. Python 潮流周刊第 31 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  7. 推荐给前端开发的 5 款 Chrome 扩展 🚀

    大家好,我是 dom 哥.这是我关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星. 工欲善其事,必先利其器.Chrome 可能是前端开发中使用最多的浏览器.在日常开发中,下列几款 Ch ...

  8. Java并发(二十)----synchronized原理进阶

    1.小故事 故事角色 老王 - JVM 小南 - 线程 小女 - 线程 房间 - 对象 房间门上 - 防盗锁 - Monitor-重量级锁 房间门上 - 小南书包 - 轻量级锁 房间门上 - 刻上小南 ...

  9. nginx下的proxy_pass使用

    之前的文章说到了,return,rewrite的使用,以及它们的使用场景,今天再来说一种代理的使用,proxy_pass,它属于nginx下的ngx_http_proxy_module模块,没有显示的 ...

  10. hszxoj 矿场搭建 [tarjan]

    hszxoj 矿场搭建 题目描述 原题来自:HNOI 2012 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决 ...