首页 > 其他分享 > Ajax请求 content_type ajax发送Fromdata对象

Ajax请求 content_type ajax发送Fromdata对象

时间:2022-12-19 20:00:22浏览次数:45  
标签:Ajax request json 表单 content ajax 格式 数据

目录

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回调函数。
image

前端代码:
image
后端返回结果后自动触发下图函数,args接受后端返回的数据。
image
我们在函数内写一个警告框:
image
视图层代码:
image
当返回值是一个页面时,该页面也会被传到ajax函数内:
image
应该将输入框获取的值,写在点击事件的函数内:
image
也可以写失去焦点事件,输入框失去焦点自动发现ajax请求:
image

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:
image
也就是这样类似于键值对的数据:
image
这种格式的数据django会自动处理到request.POST中

fromdata

form表单提交文件时的编码格式是fromdata
对于这种编码格式的数据django会自动处理到request.FILES中
编码格式是怎么处理数据的依据。

再看以前的例子,对于提交文件的表单:
image
由于表单提交默认是urlencode编码格式,所以会把文件处理到post里面去了。
所以需要提前告知django,我们发送的是什么数据。

application/json

ajax支持第三种数据编码application/json。也就是传json字符串。
同时ajax也支持get,post之外的请求。
先要进行序列化:
image
回调函数:
image
点击按钮后查看视图层:
image
发现无论是POST还是FILES都无法获取到json数据。

json格式的数据 post files都拿不到 而是放在request.body。
image
所有的请求数据第一时间都是存在request.body。body内的数据经过处理之后给post、files等。
而json格式由于过于重要,django不会进行处理。
而是直接返回二进制。
request.body不是想看就能看的 只有json编码格式才能看。

反序列化查看json数据:
image

自定义request.JSON

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

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

ajax发送Fromdata对象

ajax可以发送JavaScript的Fromdata对象。
image
这里的普通数据指的是form表单发送的那种键值对。
用对象发送数据:
image
此时就不用指定编码格式了!
添加固定配置:
image
最后写回调函数:
image
这样通过Ajax请求传递到后端的数据,普通数据会在request.POST里,文件数据会在request.FILES里:
image

标签:Ajax,request,json,表单,content,ajax,格式,数据
From: https://www.cnblogs.com/passion2021/p/16992965.html

相关文章

  • ORM的一些尾巴和Ajax的基础
    今日内容详细Q查询进阶操作使用Q查询记得先导入fromdjango.db.modelsimportQ#1.先产生Q对象q_obj=Q()#2.默认多个条件的连接条件是and可以修改为orq_obj.c......
  • Q查询进阶 ORM查询优化 ORM事物操作 ORM常用字段及字段参数 Ajax请求
    目录Q查询进阶操作ORM查询优化1.ORM的查询默认都是惰性查询2.ORM的查询自带分页处理3.only与deferonlydefer4.select_related与prefetch_relatedselect_related连表查询pr......
  • django-Ajax
    Ajaxajax不是一门新的技术并且有很多版本我们目前的是jQuery版本(版本无所谓本质一样就可以)Ajax的特点:异步提交,局部刷新基本语法: $.ajax({url:'',//后......
  • django Q查询、orm查询优化、事务、常用字段、三种多对多,Ajax
    目录今日内容详细Q查询进阶操作ORM查询优化ORM事务操作ORM常用字段类型ORM常用字段参数AjaxContent-Typeajax携带文件数据今日内容详细Q查询进阶操作fromdjango.db.mod......
  • AJAX from S3 CORS fails on preflight OPTIONS with 403
    解决办法:将<!--Samplepolicy--><CORSConfiguration><CORSRule><AllowedOrigin>*</AllowedOrigin><AllowedMethod>GET</AllowedMethod><MaxA......
  • Get file content as string
    boolGetContent(conststd::string&file_name,std::string*content){std::ifstreamfin(file_name);if(!fin){returnfalse;}std::stringstream......
  • MagicAjax装配
    MagicAjax装配2007-09-1014:51(一)版本    下载:    ​​.NET1.1binaryrelease​​    ​​.NET2.0binaryr......
  • Ajax和Axios
     Ajax:      案例:(w3school有教程)前端代码:1//1.创建核心对象2varxhttp;3if(window.XMLHttpRequest){4xhttp=n......
  • ajax 提交文件
    html页面:<formid="uploadForm"method="post"enctype="multipart/form-data"><label>选择文件</label><inputid="file"type="file"name="fil......
  • 使用 ContentProvider 共享数据 访问与添加通讯录
    1.统一的数据访问方式当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。文件的操作模式中,通过指定文件的操作模式为Contex......