jquery - 为什么我的 jquery ajax 发布到 django View 总是导致错误回调执行

标签 jquery ajax django

我的 jquery 看起来像这样:

$.ajax({
    url:"/process_values/",
    type: "POST",
    data: {values:['1','2']},
    success:function(response){
        alert("success: " + response);
    },
    error:function (xhr, textStatus, thrownError){
        alert("xhr status: " + xhr.statusText);
    },

});

我的 django View 如下所示:

@csrf_protect
def process_values(request):
    # do stuff
    print 'complete'
    return HttpResponse("success", mimetype="application/html")

View 执行正确,但错误回调总是在完成时调用。知道这是为什么吗?

更新:对于那些提出 CSRF 问题的人。事实并非如此,我正在使用标准 javascript 来设置该 cookie,并且我可以在 django 端的请求中看到 token 。

UPDATE2:我刚刚意识到我的函数中还有其他东西调用了这个 ajax 调用,从而改变了行为。我有一个使用以下方法编写的重定向:

document.location.href="/main/";

当我注释掉这一行时,会调用成功回调。哇,没想到这会有什么不同。有人知道为什么这会导致失败吗?已将此问题移至 here因为这是一个不同的问题。结束这个问题。

最佳答案

您需要在发布数据中传递csrf token ,或者使 View @csrf_exempt

你可以这样做:

$.ajax({
    url:"/process_values/",
    type: "POST",
    data: {values:['1','2'], csrfmiddlewaretoken: $("input[name=csrfmiddlewaretoken]").val()},
    success:function(response){
        alert("success: " + response);
    },
    error:function (xhr, textStatus, thrownError){
        alert("xhr status: " + xhr.statusText);
    },

});

关于jquery - 为什么我的 jquery ajax 发布到 django View 总是导致错误回调执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7688447/

相关文章:

python - 重写基于泛型类的从 URL 参数查找对象的方式

javascript - Jquery,检查 charAt() 是否等于 unicode 字符?

javascript - 传递 url 以作为 kendoui 数据源中的参数读取

javascript - 从 AJAX 中的 onreadystatechange 事件返回值

php - 想要使用底层 C++ 构建基于浏览器的 Web 应用程序,我在看 AJAX、LAMP 吗?

javascript - HTML 有没有办法将日期输入中的年份限制为 4 位数字

python - 有人能解释一下 django 中 "etag"有什么用吗?

php - 页面加载后,获取每个项目的 youtube View

javascript - 使用 javascript/jquery 将 html 转换为 svg

jquery - onclick ="return confirm(' ' )"working with $(' .class').click(function () {});