POST массив jQuery для Django
Я пытаюсь запустить JQuery массив простых чисел в Django, и я действительно не могу заставить его работать. Мне нужно немного помочь в этом. Я получаю Http 500 со следующей ошибкой:
Internal Server Error: /edit_lists/
Traceback (most recent call last):
File "/home/jabez/.virtualenvs/hackernews/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in get_response
response = middleware_method(request, response)
File "/home/jabez/.virtualenvs/hackernews/local/lib/python2.7/site-packages/django/middleware/common.py", line 106, in process_response
if response.status_code == 404:
AttributeError: 'list' object has no attribute 'status_code'
Здесь мой код:
JavaScript
$('.btn-group').find('#mark_as_done').on('click', function() {
var tasks = grab_selected();
$.ajax({
type: 'POST',
url: '/edit_lists/',
data: {'tasks': tasks},
});
});
function grab_selected() {
var tasks = [];
$('input:checked').each(function() {
tasks.push(this.id);
});
return tasks;
}
views.py
def edit_lists(request):
tasks = request.POST.getlist('tasks')
return tasks
urls.py
url(r'^edit_lists/$', 'todo.views.edit_lists', name='edit_lists')
Ответы
Ответ 1
Вы можете использовать tasks[]
вместо tasks
как параметр при отправке через ajax. Пример:
$('.btn-group').find('#mark_as_done').on('click', function() {
var tasks = grab_selected();
$.ajax({
type: 'POST',
url: '/edit_lists/',
data: {'tasks[]': tasks},
});
});
Другое дело, что вы просто возвращаете return tasks
в edit_lists()
, вы возвращаете экземпляр HttpResponse
или используете ярлык, например render
:
from django.http import HttpResponse
def edit_lists(request):
tasks = request.POST.getlist('tasks[]')
return HttpResponse('Success')
Надеюсь, что это поможет,
Ответ 2
Вы можете попробовать использовать метод JSON.stringify()
вместо задач как параметр при отправке через Ajax.
Здесь данные массива моего консоля
![введите описание изображения здесь]()
Затем отправьте данные массива с помощью ajax
$.ajax({
type: "POST",
url: "/user/Survey-Design/",
headers: {
'Authorization': "Token " + localStorage.access_token
},
data: {
'arr': JSON.stringify(arr)
},
success: function(result) {
alert('Data Has been saved')
}
});
В views.py:
def create(self,request):
array_data = request.POST['arr']
data = json.loads(array_data)
print(data)
return HttpResponse('Success')
Наконец, покажите печать (данные) на терминале
![введите описание изображения здесь]()