找到关于is_ajax
- Django request.is_ajax returning false的问题 - 但这并不能解决任何问题。我通过使用' ajax'来解决这个问题。在GET ......
我也尝试通过AJAX发布,但我无法找到结果。
我的AJAX处理程序是这样的:
function getContent(pageGet,method,post,target) {
if (typeof(post) ==='undefined') post = "";
if (typeof(method) ==='undefined') method = "GET";
if (typeof(target) ==='undefined') target = "body";
pageGet = '/?ajax=home/'+pageGet.replace('?','&');
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
var body = document.getElementById(target);
if (this.readyState == 4) {
if (this.status == 200) {
body.innerHTML = this.responseText;
var scripts = body.getElementsByTagName("script");
var script_amount = scripts.length;
for( var i = 0; i < script_amount; ++i)
eval(scripts[i].innerHTML);
} else if (this.status == 0) {
getContent('main.html');
} else {
body.innerHTML = "Failed with "+this.status;
}
}
};
xhttp.open(method, pageGet, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send(post);
return false;
}
因为,我说这从未在is_ajax
中注册,但是AJAX工作正常。这是pageGet
:
/?ajax=home/forms/genericForm.html&form=UserForm
这是post
的价值:
username=sdf&password=dfs&=Submit&
显然method
=&#34; POST&#34;。
这会转到我的view.py,request.GET
已正确填充&#39; ajax&#39; (我对另一个问题的解决方法),&#39;形式&#39;。但request.POST
为空,以及此处提到的request.body
- Ajax POST not sending data when calling 'request.POST' in Django view以及其他一些答案。
还提到了一个&#34; CSRF&#34;令牌,但我不知道我做错了什么。视图代码只打印请求。GET,body
,POST
和is_ajax
。
请,只有纯JS解决方案。
进度
我设法发布了工作 - 默认情况下启用了CSRF,您必须使用它设置AJAX标头。如果有人认为is_ajax
部分我有义务。