Javascript 如何在django中将XML返回到ajax?
我想将XML数据返回到客户端,这些数据可以在mxGraph中显示为图形 我的主要目标是将mxGraph保存到服务器,因此每当用户访问同一页面时,显示的图形都是用户留下的同一个图形。xml数据将保存在服务器中,但不会作为xml返回到客户端 目前,我尝试将其作为JSON返回,认为可以将该值作为XML使用。但是,它返回了“/n”,因此无法正确解析 视图.pyJavascript 如何在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
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”上需要替换的内容。这只是一个例子