Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在django中将XML返回到ajax?_Javascript_Java_Python_Django_Mxgraph - Fatal编程技术网

Javascript 如何在django中将XML返回到ajax?

Javascript 如何在django中将XML返回到ajax?,javascript,java,python,django,mxgraph,Javascript,Java,Python,Django,Mxgraph,我想将XML数据返回到客户端,这些数据可以在mxGraph中显示为图形 我的主要目标是将mxGraph保存到服务器,因此每当用户访问同一页面时,显示的图形都是用户留下的同一个图形。xml数据将保存在服务器中,但不会作为xml返回到客户端 目前,我尝试将其作为JSON返回,认为可以将该值作为XML使用。但是,它返回了“/n”,因此无法正确解析 视图.py def saveData(request, user): if request.method == "POST": #Get user prof

我想将XML数据返回到客户端,这些数据可以在mxGraph中显示为图形

我的主要目标是将mxGraph保存到服务器,因此每当用户访问同一页面时,显示的图形都是用户留下的同一个图形。xml数据将保存在服务器中,但不会作为xml返回到客户端

目前,我尝试将其作为JSON返回,认为可以将该值作为XML使用。但是,它返回了“/n”,因此无法正确解析

视图.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')
class Member(User):
data = models.TextField(null=True)

def __str__(self):
    return self.username
import xmltodict
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.log("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.log("node " + node)
                        var dec = new mxCodec(node.ownerDocument);
                        //console.log("dec " + dec)
                        //console.log("graph model " + graph.getModel())
                        dec.decode(node, graph.getModel());

                    }
                });

                //console.log(xml);
                //mxUtils.popup(mxUtils.getPrettyXml(node), true);
            });
型号.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')
class Member(User):
data = models.TextField(null=True)

def __str__(self):
    return self.username
import xmltodict
我希望这能帮助你:

您还不应该使用JsonResponse,因为您正在处理的数据是XML,而不是JSON

这样做:

1-在视图的顶部.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')
class Member(User):
data = models.TextField(null=True)

def __str__(self):
    return self.username
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”上需要替换的内容。这只是一个例子