javascript - Ajax请求成功后重定向到单独的Django View

标签 javascript ajax django

这里是 Django/Python 服务器端开发。而且还是一个 JS 新手(8 天)。这个问题是关于 Ajax 启动的页面重新加载。

这是一个 JS 片段,我正在其中处理来 self 发布了一些数据的 Django View 的 JSONResponse。根据成功或失败,您将看到我正在调用重定向到另一个 Django View :

  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200)
       {
            var resp = JSON.parse(this.responseText);
            if (!resp.success) {
                console.log("Failed!");
            } else {
                console.log("Success! Redirect to: ", resp.success_url);
                window.location.href = resp.success_url;
                window.location.reload();
            }
       }
    }; 
  xhr.open('POST', e.target.action);
  xhr.setRequestHeader("X-CSRFToken", get_cookie('csrftoken'));
  xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
  xhr.send(form_data);

具体而言,以下几行可以实现这一目的:

window.location.href = resp.success_url;
window.location.reload();

我的问题是,当在 Firefox 中执行此操作时,我会看到以下对话框:

enter image description here

好像POST参数又被发送了?!如何将普通的旧 GET 类型重定向到 resp.success_url ?如果您需要更多信息,请告知并告诉我。

注意:在这个问题的范围内,我们坚持使用纯 JS - 我这些天正在学习普通 JS,不想过早地进入 JQuery。

最佳答案

尝试

window.location.replace(resp.success_url);

关于javascript - Ajax请求成功后重定向到单独的Django View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48598302/

相关文章:

javascript - 执行前拦截jQuery.ajax的 'success'回调函数

python - Django - ValidationError 不显示

javascript - 想要使用 Jquery 在 <div> 中仅显示第一类

javascript - 传单不连贯地绘制瓷砖

javascript - 在 ReactJS 中映射数组时,即使数组有元素,浏览器中也不会显示任何内容

jquery - 使用 .load() 和 fadeIn() 来替换内容

javascript - Ajax提交表单有时有效,有时直接重定向到action-url

python - Django {% if forloop.first %} 问题

python - 500错误: null value in column "timeline_id" violates not-null constraint

javascript - 如何使用 javascript 回调函数检测文本区域中的 url?