Django: проблема с форматом при использовании запроса ajax (строка / Json) - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь отправить данные с ajax, но форматом является строка, и мне нужно JSON (или форматированные данные)

Данные для отправки отображаются в таблице HTML. Я набрал oop во всех моих строках, чтобы собрать все данные для отправки, используя ajax. Но у меня возникает ошибка, когда я пытаюсь создать объект JSON при использовании JSON .Parse (new_parameters). Если использовать новый_параметр в моем запросе ajax, я получаю значение False в моем представлении ajax ... Если я "stringify" new_parameters, чтобы использовать его в моем запросе ajax, я получаю данные в моем представлении ajax, но в строке формат ... это значит, что способ, которым я создаю new_parameters, не очень хороший способ ...

    var parameters = {};
    var current_parameters = [];
    var new_parameters = [];

    // Collect data from html data when user click on "Modify settings" button
    $(document).on('click', '#modifier', function(event) 
    {
        event.preventDefault(); 
        $('#table_parametrage tr').each(function() {

            var parameter = {};
            $(this).find('td div').each (function() {

                parameter[$(this).attr("col_name")] = $(this).eq(0).html();
            }); 

            new_parameters.push(parameter);  
        });

        new_parameters.shift(); 

        // requête ajax > start
        // parameters = JSON.parse(new_parameters, null, 2);
        console.log(new_parameters);

        function getCookie(name) {
            var cookieValue = null;
            if (document.cookie && document.cookie !== '') {
                var cookies = document.cookie.split(';');
                for (var i = 0; i < cookies.length; i++) {
                    var cookie = cookies[i].trim();
                    // Does this cookie string begin with the name we want?
                    if (cookie.substring(0, name.length + 1) === (name + '=')) {
                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                        break;
                    }
                }
            }
            return cookieValue;
        }

        var csrftoken = getCookie('csrftoken');

        $.ajax({
            type: "POST",
            url: $(this).data("ajax-url"),
            data: {
                csrfmiddlewaretoken: csrftoken,
                'data' : new_parameters,
            },
            dataType: 'json',
            success: function (data) {
                // alert(data);
            },
            error : function(resultat, statut, erreur){
                //
            }
        });
        // requête ajax > end

        // Remise à zéro de la liste
        new_parameters = [];
        parameters = {};


    });

1 Ответ

0 голосов
/ 28 апреля 2020

для тех, кто заинтересован, даже если я не являюсь ure, это лучший код, я решаю свою проблему следующим образом:

JS:

...
        parameters = JSON.stringify(new_parameters, null, 2);

        function getCookie(name) {
            var cookieValue = null;
            if (document.cookie && document.cookie !== '') {
                var cookies = document.cookie.split(';');
                for (var i = 0; i < cookies.length; i++) {
                    var cookie = cookies[i].trim();
                    // Does this cookie string begin with the name we want?
                    if (cookie.substring(0, name.length + 1) === (name + '=')) {
                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                        break;
                    }
                }
            }
            return cookieValue;
        }

        var csrftoken = getCookie('csrftoken');

        $.ajax({
            type: "POST",
            url: $('#modifier').data("ajax-url"),
            data: {
                csrfmiddlewaretoken: csrftoken,
                'data' : parameters,
            },
            dataType: 'json',
            success: function (data) {
                // alert(data);
            },
            error : function(resultat, statut, erreur){
                //
            }
        });

# requete ajax
def ajax(request):
    if request.method == "POST":
        data = request.POST.get('data',False)

        # https://www.programiz.com/python-programming/json
        data_dict = json.loads(data)
        print(data_dict)
        print(data_dict[0]['ran_st1'])

    else:
        datas = ''
        print('echec')

    return render(request, 'randomization_settings/ajax.html', {})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...