我试图通过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]传递到成分视图中的过滤器。
我找到了解决原始问题的方法。将其发布在此处作为答案,希望对您有所帮助。
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)