Window.location.replace не перенаправляет меня по указанному URL - PullRequest
0 голосов
/ 26 мая 2019

Вместо этого он перенаправляет меня на URL 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 голосов
/ 26 мая 2019

Когда вы используете пустую строку в переменной domainName, вызов ajax будет корректным, а замена - нет. Если вы называете это правильно. Например:

submitPOST (id, api, login )

Попробуйте использовать 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...