小编典典

通过jQuery ajax调用将值列表传递给Django视图

ajax

我试图通过jQuery
ajax调用将数值列表(id)从一个网页传递到另一个网页。我不知道如何传递和读取列表中的所有值。我可以成功发布和读取1个值,但不能读取多个值。这是我到目前为止的内容:

jQuery的:

var postUrl = "http://localhost:8000/ingredients/";
$('li').click(function(){
    values = [1, 2];
    $.ajax({
        url: postUrl,
        type: 'POST',
        data: {'terid': values},
        traditional: true,
        dataType: 'html',
        success: function(result){
            $('#ingredients').append(result);
            }
    });       
});

/成分/视图:

def ingredients(request):
    if request.is_ajax():
        ourid = request.POST.get('terid', False)
        ingredients = Ingredience.objects.filter(food__id__in=ourid)
        t = get_template('ingredients.html')
        html = t.render(Context({'ingredients': ingredients,}))
        return HttpResponse(html)
    else:
        html = '<p>This is not ajax</p>'      
        return HttpResponse(html)

使用Firebug,我可以看到POST包含两个ID,但格式可能错误(terid = 1&terid = 2)。因此,我的成分视图仅拾取terid =
2。我究竟做错了什么?

编辑: 为澄清起见,我需要ourid变量将值[1、2]传递到成分视图中的过滤器。


阅读 257

收藏
2020-07-26

共1个答案

小编典典

我找到了解决原始问题的方法。将其发布在此处作为答案,希望对您有所帮助。

jQuery的:

var postUrl = "http://localhost:8000/ingredients/";
$('li').click(function(){
    values = [1, 2];
    var jsonText = JSON.stringify(values);
    $.ajax({
        url: postUrl,
        type: 'POST',
        data: jsonText,
        traditional: true,
        dataType: 'html',
        success: function(result){
            $('#ingredients').append(result);
            }
    });       
});

/成分/视图:

def ingredients(request):
    if request.is_ajax():
        ourid = json.loads(request.raw_post_data)
        ingredients = Ingredience.objects.filter(food__id__in=ourid)
        t = get_template('ingredients.html')
        html = t.render(Context({'ingredients': ingredients,}))
        return HttpResponse(html)
    else:
        html = '<p>This is not ajax</p>'      
        return HttpResponse(html)
2020-07-26