Как вернуть XML в ajax в django?

Я хочу вернуть клиенту XML-данные, которые можно отобразить в виде графика в mxGraph.

Моя основная цель - сохранить mxGraph на сервере, поэтому всякий раз, когда пользователь обращается к той же странице, отображается тот же график, на котором пользователь оставил его. Данные xml сохраняются на сервере, но не возвращаются клиенту в виде xml.

В настоящее время я пытался вернуть его как JSON, думая, что можно использовать значение как XML. Однако с ним возвращается "/ n", поэтому он не разбирается должным образом.

views.py

def saveData(request, user):
if request.method == "POST":
#Get user profile
    member = Member.objects.get(username=user)
#Get XML data once user presses save
#xmlData = request.POST['xml']
    member.data = request.POST['xml']
    member.save()
    print(member.data)
    response = JsonResponse([
        member.data
    ], safe = False);
    #return render(request, 'fastcookapp/index.html', {"xmlData": member.data})
    return HttpResponse(response, content_type = "application/json")


return HttpResponse('POST is not used')

ajax

var button = mxUtils.button('Save', function()
            {

                var encoder = new mxCodec();
                var node = encoder.encode(graph.getModel());
                var xml = mxUtils.getPrettyXml(node); 
                var csrftoken = getCookie('csrftoken');

                $.ajax({

                    type: "POST",
                    url: "/saveData/",
                    data: { "xml": xml},
                    headers:{
                        "X-CSRFToken": csrftoken
                    },
                    success: function(data){
                        console.info("data" + data[0])

                        //functions in mxgraph to decode the xml back to a graph
                        var xmlDoc = mxUtils.parseXml(data[0]);
                        var node = xmlDoc.documentElement;
                        //console.info("node " + node)
                        var dec = new mxCodec(node.ownerDocument);
                        //console.info("dec " + dec)
                        //console.info("graph model " + graph.getModel())
                        dec.decode(node, graph.getModel());

                    }
                });

                //console.info(xml);
                //mxUtils.popup(mxUtils.getPrettyXml(node), true);
            });

models.py

class Member(User):
data = models.TextField(null=True)

def __str__(self):
    return self.username
stackoverflow.com/questions/23856040/…
Anup Yadav 26.12.2018 10:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
785
1

Ответы 1

Я надеюсь, это поможет вам:

Вам пока не следует использовать JsonResponse, потому что данные, с которыми вы работаете, - это XML, а не JSON.

Сделайте так:

1 - Вверху views.py

import xmltodict

2 - Внутри кода вашего метода (def), например:

real_response = response.content

response_as_dict = xmltodict.parse(real_response)

return JsonResponse(response_as_dict)

3 - В обратном вызове успеха ajax вы должны работать с данными:

Например :

success: function(data) {

         var textBox = document.getElementById('textBox');

          textBox.innerText = data.parentNode.node;

      }

Я уверен, что это сработает для вас!

Во время процесса отлаживайте и смотрите, что нужно заменить на «parentNode» и «node». Это был просто пример.

Другие вопросы по теме