Django 使用Ajax进行前后台交互的示例讲解


Posted in Python onMay 28, 2018

本文要实现的功能是:根据下拉列表的选项将数据库中对应的内容显示在页面,选定要排除的选项后,提交剩余的选项到数据库。

为了方便前后台交互,利用了Ajax的GET和POST方法分别进行数据的获取和提交。

代码如下:

<!--利用获取的数据进行表单内容的填充-->
<script>
$("#soft_id").change(function(){
var softtype=$("#soft_id").find("option:selected").text();
var soft={'type_id':softtype}
$.ajax( {
 type: 'GET',
 url:'/data/soft-filter/{{family}}',
 dataType: 'json',
 data:soft,
 success: function( data_get ){
 build_dropdown( data_get, $( '#min_version' ), '请选择最低版本' );//填充表单
 build_dropdown( data_get, $( '#max_version' ), '请选择最高版本' );
 build_div(data_get,$('#soft_affected'));
 }
 }); 
 });
 var build_dropdown = function( data, element, defaultText ){
 element.empty().append( '<option value="">' + defaultText + '</option>' );
 if( data ){
 $.each( data, function( key, value ){
 element.append( '<option value="' + key + '">' + value + '</option>' );
 } );
 }
 }
 var build_div = function( data, element){
 if( data ){
 element.empty();
 $.each( data, function( key, value ){
  element.append(' <li class="clearfix"> <div class="todo-check pull-left"><input name="chk" type="checkbox" value="'+value+'" /></div> <div class="todo-title">'+value+' </div><div class="todo-actions pull-right clearfix"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="todo-complete"><i class="fa fa-check"></i></a><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="todo-edit"><i class="fa fa-edit"></i></a><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="todo-remove"><i class="fa fa-trash-o"></i></a></div> </li>');
 } );
 }
}
</script>
<!--选择并提交数据-->
<script>
//选择数据
function postselect (){
  var seleitem=new Array();
 $("input[name='chk']").each(function(i){
 if(!($(this).is( ":checked" )) ){
  seleitem[i]=$(this).val();
  // alert(seleitem[i]); 
}
});
//将排除后的数据提交到后台数据库
var soft={'type_id':seleitem}
$.ajax( {
 type: 'POST',
 url:'/data/soft-submit',
 dataType: 'json',
 data:soft,
 success: function( data_get ){
 }
 });
}
</script>

部分html代码为:

<div style="overflow: hidden;" >
      <ul id='soft_affected' class="todo-list sortable">
      </ul>
 </div>

views.py中处理请求和响应代码:

def soft_submit(request):
 if request.is_ajax():
  id=request.POST.get('type_id')
 return HttpResponse("success")
def soft_filter(request,fami):
 softtype=''
 ajax_release_version=[]
 release_version=[]
 if request.is_ajax():
  softtype=request.GET.get('type_id')
  soft_type=SoftTypeRef.objects.using('vul').filter(description=softtype)
  soft_tp_id=0
  for i in soft_type:
   soft_tp_id= i.soft_type_id
  web_soft=SoftWeb.objects.using('vul').filter(soft_type_id=soft_tp_id)
  for i in web_soft:
   ajax_release_ver=i.release_version
   ajax_release_version.append(ajax_release_ver)
  return HttpResponse(json.dumps(ajax_release_version), content_type='application/json')

以上这篇Django 使用Ajax进行前后台交互的示例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
Selenium定位元素操作示例
Aug 10 Python
PyQt5实现简易计算器
May 30 Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 Python
python中metaclass原理与用法详解
Jun 25 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
python基于property()函数定义属性
Jan 22 Python
python 安装impala包步骤
Mar 28 Python
Python并发爬虫常用实现方法解析
Nov 19 Python
python制作微博图片爬取工具
Jan 16 Python
python保存图片的四个常用方法
Feb 28 Python
Python实现爬虫爬取NBA数据功能示例
May 28 #Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 #Python
Python实现合并两个列表的方法分析
May 28 #Python
django js实现部分页面刷新的示例代码
May 28 #Python
Django项目中用JS实现加载子页面并传值的方法
May 28 #Python
Python面向对象类继承和组合实例分析
May 28 #Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 #Python
You might like
Smarty局部缓存的几种方法简介
2014/06/17 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
[02:09]抵达西雅图!中国军团加油!
2014/07/07 DOTA
Python 功能和特点(新手必学)
2015/12/30 Python
Python 加密与解密小结
2018/12/06 Python
Python装饰器语法糖
2019/01/02 Python
python 同时运行多个程序的实例
2019/01/07 Python
Python3列表List入门知识附实例
2020/02/09 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
大学生毕业自我鉴定范文
2014/02/03 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
银行给客户的感谢信
2015/01/23 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis
使用CSS实现音波加载效果
2023/05/07 HTML / CSS