Jquery Ajax:将整数数组发布到Django

Jquery Ajax:将整数数组发布到Django,jquery,ajax,django,Jquery,Ajax,Django,我正在使用。我想让用户选择多行并删除它们。到目前为止,我已经让它工作了,所以它使用下面的代码删除了选择中的第一行 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 a

我正在使用。我想让用户选择多行并删除它们。到目前为止,我已经让它工作了,所以它使用下面的代码删除了选择中的第一行

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代码?

您需要使用
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
        }
    }
);

你可以试试这样的东西:

$(function(){
    $.post("{% url delete %}", {"ids[]": anSelected}, function(res){
    if(res.ok){
        // remove rows from your table, maybe :)
        // oTable.fnDeleteRow(anSelected);
      }else{
        alert(res.errors); 
      } 
    });
})
在服务器上:

@ajax_request
def test(request):
    ids = request.POST.getlist("ids[]")
    try:
        Items.objects.filter(id__in=ids).delete()
    except:
        return {"ok": False, "errors": "your error"}
    return {"ok": True}

@ajax\u请求装饰器来自,您可以返回json响应。

谢谢。我在{arr:anSelected}行上遇到了“invalid property id”错误。修改了我的代码,只是因为额外的大括号出现了语法错误:)这里的键是POST.getlist。有助于从表单生成的数组中获取DJANGO中的数据