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中执行此操作时,我会看到以下对话框:
似乎POST
参数再次被发送?我如何才能将普通的旧GET
类型重定向到resp.success_url
?如果您需要更多信息,请告知并告诉我。
注意:让我们坚持使用纯JS来解决这个问题的范围 - 我现在正在学习vanilla JS,并且不想过早地进入JQuery。
答案 0 :(得分:1)
尝试
window.location.replace(resp.success_url);