目录

说明

在web开发过程中,将多选框的值提交到django后台,有两种提交方式:

  • form表单提交
  • ajax异步提交

我需要使用ajax将复选框的值提交到后台,记录一下当时碰到的问题

正文

前端接收到一个标签列表的queryset对象,在前端渲染出来复选框

复选框代码:

Tag标签:
{% for tags in tags_list %}
<input type="checkbox" name="tags" id="{{ tags.pk }}" value="{{ tags.name }}">{{ tags.name }}&nbsp;
{% endfor %}

如何将用户选择的多选框获取到,一起提交到后台?

可以采取下面的方式:

$(selector).each(function(){})

var tags = [];
$("input[name='tags']:checked").each(function (i) {
{# tags[i] = $(this).attr('id')#}
tags.push($(this).attr('id'))
});
  • selector:属性选择器
  • :checked:专门针对于表单筛选器
  • ().each():遍历每个jQuery对象,为每个匹配的元素执行函数。

利用ajax请求将数据发送到后端

$.ajax({
url: '',
type: 'post',
data: {
'csrfmiddlewaretoken': '{{ csrf_token }}',
'content': Content,
'title': Title,
'tags': JSON.stringify(tags),
'catepory': $("input[name='catepory']:checked").val(),
}

对于想要前端传自定义对象数组到后端,可以有两种方式,一种使用默认的urlencoded,另一种使用json

对于想要前端传自定义对象数组到后端,
ajax请求中设置contentType:"application/json;"
ajax请求中设置data:JSON.stringify(tags)

后端接收

if request.is_ajax():
if request.method == "POST":
tags = request.POST.get('tags')
print(tags,type(tags))

注意后端get接收到的是一个字符串形式的容器类型的数据,可以使用eval内置函数将字符串的引号去掉,变为原有的应该的有的数据类型

tags = eval(tags)
print(tags,type(tags))

讲到这里,想起来jQuery中的两个方法:

  • $(selector).each(function(){}):在DOM操作上比较多,多用于遍历对象。
  • $.each(obj,function(){}):在数据处理上比较多,多用于遍历数组。

最新文章

  1. Atitit.数据库存储引擎的原理与attilax 总结
  2. 小图标外链API
  3. shell中的函数、数组
  4. 【转】移动Web单页应用开发实践——页面结构化
  5. Linux客户端、服务器、窗口管理器的关系
  6. Python脚本控制的WebDriver 常用操作 &lt;二十六&gt; 上传文件
  7. Linux开机启动流程
  8. js判断一个字符串是否在另一个字符串中存在 indexOf
  9. Linux 查看文件修改
  10. 17_AOP入门准备_Salay案例(利用动态代理)
  11. [MVC4-基礎] 連動DropDownList - 使用jQuery、JSON
  12. Python学习笔记5(字符串与正则表达式)
  13. apt-get 安装路径
  14. sqoop: mysql to hive
  15. js中的拷贝问题
  16. cygwin pip安装
  17. ARM 汇编指令 DCD
  18. MySQL性能调优的10个方法 - mysql数据库栏目
  19. Go标准库之读写文件(File)
  20. Android MIME类型结构

热门文章

  1. [转]C++ 使用Makefile文件
  2. k8s 映射 外部服务
  3. 2D转换中的translate里调用matrix()的用法
  4. Hbase启动的时候出现:[RpcServer.handler=28,port=60000] ipc.RpcServer: RpcServer.handler=28,port=60000: exiting,master.HMasterCommandLine: Master exiting
  5. Apache Spark 2.2.0 中文文档 - Spark RDD(Resilient Distributed Datasets)
  6. JS事件 光标聚焦事件(onfocus)当网页中的对象获得聚点时,执行onfocus调用的程序就会被执行
  7. 关于python merge后数据行数增加的问题
  8. django项目基础
  9. LeetCode动态规划题总结【持续更新】
  10. postman在有登录认证的情况下进行接口测试!!!