小编典典

Ajax:将整数数组发布到Django

ajax

我正在使用DataTables。我想让用户选择多个行并将其删除。到目前为止,我可以使用它,因此它使用下面的代码删除选择的第一行。

Ajax代码:

    /* Add a click handler for the delete row */
    $('#delete').click( function() {
        /* fnGetSelected returns an array of integers - each int is a db unique id */
        var anSelected = fnGetSelected( oTable );
        delete_url = '/delete/' + anSelected[0];               
        $.ajax({                  
              url: delete_url,
              type: 'GET',
          });
        oTable.fnDeleteRow( anSelected[0] ); 
        fnReloadAjax();
    } );

Django代码:

@login_required
def delete(request, row_id):                          
     item = get_object_or_404(Items, pk=row_id, user=request.user)
     item.delete()

我如何更新它以将所有行ID传递给Django后端?我想我需要发布anSelected数组,但不确定如何执行此操作。处理该整数数组需要什么Django代码?


阅读 253

收藏
2020-07-26

共1个答案

小编典典

您需要使用simplejson.loads,例如,如果要传递anSelected数组,因为arr您将使用类似这样的东西

from django.utils import simplejson

array = simplejson.loads(request.POST['arr'])
try:
    ModelName.objects.filter(pk__in=array).delete()
except:
    return HttpResponse(simplejson.dumps({'ok': False}))
return HttpResponse(simplejson.dumps({'ok': True}))

并在您的javascript中按照以下方式进行操作:

$.post(
    '/delete/',
    {arr: anSelected},
    function(data){
        if(data.ok){
            //Everything went smoothly
        }else{
            //Something failed, you can send extra info from django like the name of the exception thrown if you'd want and display it
        }
    }
);
2020-07-26