When I try to send an array to Django via Ajax (jQuery)
JavaScript code:
new_data = ['a','b','c','d','e']; $.get('/pythonPage/', {'data': new_data},function(data){});
and I try to read the array:
Python:
request.GET.get("data[]")
I get only the last array value:
'e'
What am I doing wrong?
To send and receive data to and from a web server, AJAX uses the following steps: Create an XMLHttpRequest object. Use the XMLHttpRequest object to exchange data asynchronously between the client and the server. Use JavaScript and the DOM to process the data.
method == "POST" is a boolean value - True if the current request from a user was performed using the HTTP "POST" method, of False otherwise (usually that means HTTP "GET", but there are also other methods).
You're looking for the QueryDict
's getlist
request.GET.getlist('data') request.GET.getlist('data[]') request.GET.getlist('etc')
https://docs.djangoproject.com/en/2.0/ref/request-response/#django.http.QueryDict.getlist
Quite old question but let me show you full working code for this. (Good for newbie :)
In your template
data = { 'pk' : [1,3,5,10] } $.post("{% url 'yourUrlName' %}", data, function(response){ if (response.status == 'ok') { // It's all good console.log(response) } else { // Do something with errors } })
urls.py
urlpatterns = [ url(r'^yourUrlName/', views.yourUrlName, name='yourUrlName'), #Ajax ]
views.py
from django.views.decorators.http import require_POST from django.http import JsonResponse @require_POST def yourUrlName(request): array = request.POST.getlist('pk[]') return JsonResponse({ 'status':'ok', 'array': array, })
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With