在Ajax请求成功后重定向到单独的Django视图

时间:2018-02-03 14:13:48

标签: javascript ajax django

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

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

  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来解决这个问题的范围 - 我现在正在学习vanilla JS,并且不想过早地进入JQuery。

1 个答案:

答案 0 :(得分:1)

尝试

window.location.replace(resp.success_url);