javascript - Window.location.replace 不会重定向我给定的网址
问题描述
相反,它将我重定向到 main.js 的 url
function submitPOST(elementId, api, callback) {
let input = document.getElementById(elementId).getElementsByTagName("input");
let body = {};
for (let i = 0; i < input.length; i++) {
body[input[i].name] = input[i].value;
}
call('POST', api, body, callback);
}
function call(method, api,body, callback) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.onload = function () {
if (xmlHttp.status==200){
callback(xmlHttp.response);
}else{
console.log(xmlHttp.response);
}
};
xmlHttp.open(method, domainName+"/api/"+api, true); // true for asynchronous
xmlHttp.setRequestHeader("Content-Type", "application/json");
xmlHttp.send(JSON.stringify(body));
}
function login(input){
var response=JSON.parse(input);
document.cookie="atoken="+response['data'];
document.location.replace(domainName);
}
解决方案
当您在 domainName 变量中使用空字符串时,ajax 调用将正确,但替换不会。如果你正确调用它。例如:
submitPOST(id, api,登录)
尝试使用 console.log(或其他调试工具)向您显示重定向 url。
顺便说一句,您的情况可能 JSON.parse 会引发异常。将其放入 try-catch 块中
function login(input){
try {
var response=JSON.parse(input);
document.cookie="atoken="+response['data'];
console.log('redirect to', domainName);
document.location.replace(domainName);
} catch(e) {
console.error('error in login process',e);
}
}
推荐阅读
- google-apps-script - Google Sheet Scripts -> ss.getRange() -> JSON.Stringify 删除一维数组的元素级别的括号
- google-colaboratory - 无法打开新的 Google Colab 笔记本
- ios - 在 Swift 中循环对象数组
- android - 有没有办法通过没有服务器的套接字连接两个反应本机应用程序?
- javascript - 无法删除重复的 cookie
- laravel - 如何验证laravel中的对象数组?
- python - 数据框中的列表 str.replace 不起作用 - Python
- php - 从刀片文件中自动解析语言字符串
- python - 全局变量的值在线程中不会改变
- python - AttributeError:模块“keras.engine.base_layer”没有属性“BaseRandomLayer”