我需要使用AJAX获取一些HTML内容。 只要我使用jQuery,我的视图就能正常工作:
view.py
def my_ajax(request):
if request.is_ajax():
my_form = MyForm()
context = {
'form': my_form
}
return render(request, 'myapp/form.html', context)
main.js (jQuery 加载)
$(document).ready(function() {
$('#foo').click(function() {
$('#bar').load('{% url "myapp:form" %}');
});
});
如果我使用JavaScript的XMLHttpRequest
,那么我需要从视图中删除if request.is_ajax():
,否则我会得到错误消息The view myapp.views.my_ajax didn't return an HttpResponse object. It returned None instead.
main.js(XMLHttpRequest)
(function() {
document.getElementById('foo').addEventListener("click", function() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("bar").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", '{% url "myapp:form" %}', true);
xhttp.send();
}, false);
})();
我在使用XMLHttpRequest时做错了什么?我肯定是漏了什么,但这次我想使用原生JavaScript。谢谢!
main.js
? 如果没有,则它将在JavaScript文件中始终发送实际文本'{% url "myapp:form" %}'
。唯一会被扩展的模板标签必须位于你正在渲染的form.html模板中。 - 2ps