Как решить JSONdecode ошибку в ajax django? - PullRequest
0 голосов
/ 16 января 2020

Я получаю сообщение об ошибке JSONdecode при отправке запроса POST с ajax на django views.py. POST отправляет массив json. Данные из этого POST будут использованы для создания модели. Ценим любые подсказки.

Ошибка:

Exception Type: JSONDecodeError at /order-confirmation
Exception Value: Expecting value: line 1 column 1 (char 0)
Request information:
USER: ledi12

GET: No GET data

POST: No POST data

FILES: No FILES data

AJAX Запрос:

var new_array = JSON.stringify(array)
      $.ajax({
        url: 'http://localhost:8000/order-confirmation',
        type: 'POST',
        data: '{"array":"' + new_array+'"}',
        processData: false,
        contentType: "application/json",
        dataType: "json",
        headers: {"X-CSRFToken":'{{ csrf_token }}'},
        success: function (result) {
            console.log(result.d);
        },
        error: function (result) {
            console.log(result);
        }
      });

Просмотров:

@csrf_exempt
def order_confirmation(request):

    if request.method == 'POST':
        data = json.loads(r"request.body").read()
        print(data)
        return HttpResponse(status=200) 
    else:
        return render(request, 'main_templates/order_confirmation.html')

1 Ответ

0 голосов
/ 17 января 2020

Причина появления этой ошибки в том, что библиотека JSON не может правильно скомпилировать строку. Есть несколько вещей, которые ваш код должен изменить. Удалите символ 'r', который находится рядом с request.body (). В json .loads () нет необходимости использовать функцию read (). Вы можете предварительно обработать ваш массив в строку и после этого передать его в ajax. Поле данных будет содержать только строку. Таким образом, поле кода ajax должно выглядеть как

data: new_array
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...