我有一些JavaScript数据,并希望将其发送到Django视图函数。之后,我想使用HttpResponse呈现Django模板,但它是如何工作的?如何使用jQuery将数据发送到Django视图并呈现Django模板?
首先,我用jQuery.ajax()发送了一些数据到Django视图,并使用了响应数据,现在我想在第二个jQuery.ajax()中发送数据 - 点击按钮后 - Django查看功能,并最终呈现一个简单的模板,就像它是如何工作的,如果我点击网站上的简单链接。
我已经尽可能地削减片段为清楚起见
$(matchfield).on('click', function(event) {
event.preventDefault();
var field = $(this).val();
$.ajax({
method: "POST",
url: "/view-function/",
data: { "field": field },
dataType: "json",
context: this,
success: function (data) {
if(data.message === 1) {
points = 100
$('#submit').on('click', function(event) {
event.preventDefault();
$.ajax({
url: "/another-view/",
method: "POST",
data: {"points": points},
success:function(response){ // I guess the mistake is here
$(document).html(response)
}
})
})
}
}
});
});
如果被点击的#submit
按钮,响应的状态代码是200和Chrome开发工具显示了完整的预期预览中的新HTML页面(无CSS样式),但在当前页面上没有任何反应。
这是响应:
<!DOCTYPE html>
<html>
<head>
// head stuff
</head>
<body>
// Some stuff
</body>
</html>
我用return HttpResponse(template.render(context, request))
我查看-功能:
from django.http import HttpResponse
def another-view(request):
if request.method == "POST":
if request.POST.get("points"):
points = int(request.POST.get("points"))
template = loader.get_template('my_template.html')
context = {'message': "any message"}
return HttpResponse(template.render(context, request))
这是我的看法功能是如何工作的,点存储在数据库和一些魔术发生,但一切正常,请求状态代码是200.
我不幸不知道我忽略了什么。
来自AJAX(内部ajax()与url:“/ another-view /”)的响应是预期的HTML页面,但在当前页面上没有发生。我想替换整个页面
向我们展示了Python代码用于查看功能。 –
你能展示你的观点吗?从你目前的问题来看,你似乎并不真的需要ajax。 – Sam
好吧,快速浏览一下,你正在检查'points' AJAX查询运行的时间,而不是'field'。你有'如果request.POST.get(“field”):'在任何地方? (对不起,提前点击提交) – Sam