Window.location.replace不会重定向给定的URL

时间:2019-05-26 07:12:27

标签: javascript web

相反,它将我重定向到main.js的网址

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);
}

1 个答案:

答案 0 :(得分:0)

当您在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);
    }
}