Reputation: 2204
I just posted this question jQuery - passing arrays in post request, where I don't to send arrays in post request, but there is no problem in jQuery code.
The problem is with receiving the POST request in django. I did like this.
def portfolio_add(request):
ukeys = request.POST.getlist('ukeys')
........etc.......
But I'm getting ukeys values as u'[]'
. When I checked with just request.POST
I got the values as u"<QueryDict: {u'ukeys[]': [u'68c04', u'16149']}>"
So, How to get those values as a list in Django?
Thanks!
Upvotes: 45
Views: 86193
Reputation: 5374
I encountered this same issue -- Jakub is right, the []
is useful for other web frameworks, but the behavior of jQuery can be changed (I didn't like the varname[]
format).
The $.param
function is specifically what does this and it also accepts a parameter to override this behavior.
Change Globally:
// 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;
Change on a per-call basis:
$.param(data, true); // true sets traditional mode
// for example:
$.post('/some/url/', $.param(data, true)).done(callback)
Or of course you can use the []
on the server as Jakub mentions.
Upvotes: 2
Reputation: 16252
jQuery POST's arrays with the []
suffix because PHP and some web frameworks understand that convention, and re-build the array on the server-side for you automatically. Django doesn't work that way, but you should be able to access the data via:
ukeys = request.POST.getlist('ukeys[]')
Upvotes: 104