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获得一个月有多少天的方法
Jun 04 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
Python设计模式之外观模式实例详解
Jan 17 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
Python程序暂停的正常处理方法
Nov 07 Python
PyTorch中permute的用法详解
Dec 30 Python
Python timeit模块的使用实践
Jan 13 Python
python重要函数eval多种用法解析
Jan 14 Python
解决keras使用cov1D函数的输入问题
Jun 29 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
python实现图片转换成素描和漫画格式
Aug 19 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
PHP扩展开发入门教程
2015/02/26 PHP
使用Yii2实现主从数据库设置
2016/11/20 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
用脚本调用样式的几种方法
2006/12/09 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
用js实现放大镜效果
2020/10/28 Javascript
python的keyword模块用法实例分析
2015/06/30 Python
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
python request 模块详细介绍
2020/11/10 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
前台接待岗位职责
2013/12/03 职场文书
经理助理岗位职责
2014/03/05 职场文书
学生干部培训方案
2014/06/12 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android