我刚刚发布了这个问题jQuery - passing arrays in post request,我不会在post请求中发送数组,但是jQuery代码没有问题。
问题在于在django中接收POST请求。我确实喜欢这个。
def portfolio_add(request):
ukeys = request.POST.getlist('ukeys')
........etc.......
但是我将ukeys值设为u'[]'
。当我使用request.POST
进行核对时,我得到的值为u"<QueryDict: {u'ukeys[]': [u'68c04', u'16149']}>"
那么,如何将这些值作为Django中的列表获取?
谢谢!
答案 0 :(得分:75)
jQuery POST的后缀为[]
的数组,因为PHP和一些Web框架理解该约定,并自动为您重新构建服务器端的数组。 Django不会那样工作,但您应该能够通过以下方式访问数据:
ukeys = request.POST.getlist('ukeys[]')
答案 1 :(得分:1)
我遇到了同样的问题-Jakub是正确的,[]
对其他Web框架很有用,但是jQuery的行为可以更改(我不喜欢varname[]
格式)。
$.param
函数专门用于执行此操作,并且它还接受一个参数来覆盖此行为。
全局更改:
// put this early in your JS, preferably the first one imported after jQuery
// or before the document.ready function if using inline js
jQuery.ajaxSettings.traditional = true;
根据每次通话进行更改:
$.param(data, true); // true sets traditional mode
// for example:
$.post('/some/url/', $.param(data, true)).done(callback)
当然,您也可以按照雅库布(Jakub)的说法在服务器上使用[]
。