Как получить ajax данных публикации в views.py? - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь отправить форму, используя ajax, проблема в запросе. POST всегда пуст, сервер успешно отвечает на запрос, но данные не поступают.

jquery:

$(document).ready(function() {
     $("#step1").click(function(e) {
       
     console.log($('#form-one').serialize())
     var csrftoken = $('[name="csrfmiddlewaretoken"]').val();
      e.preventDefault();
          $.ajax({ 
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
                "X-CSRFToken": csrftoken
            },
              data: $('#form-one').serialize(), 
              type: 'POST', 
              url: '/commande/test', 
              success: function(response) { 
                  console.log("success !")
              }
          });
          return false;
      });
  });

views.py


def test(request):
    
    nadjib = modelformset_factory(Commande_Designation, form=Commande_D_Form, extra=1, can_delete=True)
    formset = nadjib(queryset=Commande.objects.none())
    if request.method == 'POST' and request.is_ajax:
            print('post test 1')
            
            
            print(request.POST)// empty !!
            .............


1 Ответ

0 голосов
/ 02 августа 2020

Не зная статуса вашей формы, я бы сказал, что вам безопаснее делать элемент данных в. ajax объектом. Вы можете вернуться к отправке формы в виде отдельных параметров, как только она заработает.

И я рекомендую обработчик ошибок - без него ошибки не отображаются, а ajax, похоже, вообще не работает:

Попробуйте следующее:

$.ajax({ 
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
            "X-CSRFToken": csrftoken
        },
          data: { mydata : $('#form-one').serialize()}, 
          type: 'POST', 
          url: '/commande/test', 
          success: function(response) { 
              console.log("success !")
          },
          error : function (jqXHR, textStatus, errorThrown) {
            console.log(textStatus + ": " + errorThrown);
         },

      });

Тогда вы должны увидеть параметр в $ _POST под названием «mydata».

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