这里是 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 中执行此操作时,我会看到以下对话框:
好像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/