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 05 Python
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
Python面向对象编程中的类和对象学习教程
Mar 30 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 Python
Python实现比较扑克牌大小程序代码示例
Dec 06 Python
Python实现的维尼吉亚密码算法示例
Apr 12 Python
解析python实现Lasso回归
Sep 11 Python
python实现程序重启和系统重启方式
Apr 16 Python
Python dict的常用方法示例代码
Jun 23 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
Python gevent协程切换实现详解
Sep 14 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
PHP中上传大体积文件时需要的设置
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
php中{}大括号是什么意思
2013/12/01 PHP
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
js自定义事件代码说明
2011/01/31 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
简单了解python关系(比较)运算符
2019/07/08 Python
git查看、创建、删除、本地、远程分支方法详解
2020/02/18 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
ET Mall东森购物网:东森严选
2017/03/06 全球购物
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
红领巾广播站广播稿
2014/02/01 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
合同范本之电脑出租
2019/08/13 职场文书
修辞手法有哪些?
2019/08/29 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
React Fragment介绍与使用详解
2021/11/11 Javascript