Django中使用Ajax进行前后台交互

本文要实现的功能是:根据下拉列表的选项将数据库中对应的内容显示在页面,选定要排除的选项后,提交剩余的选项到数据库。为了方便前后台交互,利用了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( ' + defaultText + '' );
  if( data ){
   $.each( data, function( key, value ){
    element.append( ' + value + '' );
   } );
  }
 }
 var build_div = function( data, element){
   if( data ){
   element.empty();
   $.each( data, function( key, value ){
     element.append(' 
  • '" />
    '+value+'
  • '
    ); } ); } }
    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进行前后台交互_第1张图片

    你可能感兴趣的:(Django)