django没有识别ajax,也无法发布

时间:2017-06-21 18:34:06

标签: javascript ajax django

找到关于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,bodyPOSTis_ajax

请,只有纯JS解决方案。

进度

我设法发布了工作 - 默认情况下启用了CSRF,您必须使用它设置AJAX标头。如果有人认为is_ajax部分我有义务。

0 个答案:

没有答案