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合并字典键值并去除重复元素的实例
Dec 18 Python
python3学习笔记之多进程分布式小例子
Feb 13 Python
spark: RDD与DataFrame之间的相互转换方法
Jun 07 Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 Python
python3.6下Numpy库下载与安装图文教程
Apr 02 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
May 15 Python
python selenium xpath定位操作
Sep 01 Python
python安装及变量名介绍详解
Dec 12 Python
python如何利用cv2模块读取显示保存图片
Jun 04 Python
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 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简单实现数字分页功能示例
2016/08/24 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
WordPress JQuery处理沙发头像
2009/06/22 Javascript
基于jquery的cookie的用法
2011/01/10 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
javascript self对象使用详解
2016/10/18 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
vue 解决异步数据更新问题
2019/10/29 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
Python 创建子进程模块subprocess详解
2015/04/08 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
python变量的存储原理详解
2019/07/10 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
品质管理部岗位职责范文
2014/03/01 职场文书
实践单位评语
2014/04/26 职场文书
法人授权委托书
2014/09/16 职场文书
后进基层党组织整改方案
2014/10/25 职场文书
《神奇的鸟岛》教学反思
2016/02/22 职场文书
anaconda python3.8安装后降级
2021/06/11 Python
Python下opencv库的安装过程及问题汇总
2021/06/11 Python