我刚刚发布了这个问题jQuery - passing arrays in post request,我不想在post请求中发送数组,但在jQuery代码中没有问题。
问题是在django中接收POST请求。我确实喜欢这个。
def portfolio_add(request):
ukeys = request.POST.getlist('ukeys')
........etc.......
但是我得到的UKES值是u'[]'
。当我只用request.POST
检查时,我得到的值是u"<QueryDict: {u'ukeys[]': [u'68c04', u'16149']}>"
那么,如何在Django中以列表的形式获取这些值呢?
谢谢!
发布于 2012-06-25 14:00:08
POST的数组带有[]
后缀,因为jQuery和一些web框架理解该约定,并自动在服务器端为您重新构建数组。Django不是这样工作的,但您应该能够通过以下方式访问数据:
ukeys = request.POST.getlist('ukeys[]')
发布于 2018-07-24 22:46:31
我遇到了同样的问题-- jQuery是对的,[]
对其他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)
当然,您也可以像雅各布提到的那样,在服务器上使用[]
。
https://stackoverflow.com/questions/11190070
复制相似问题