我正在编写一个事件,当用户单击链接时,数据的有效负载将发送到服务器,并使用重定向到另一个页面的函数进行回调。

这里的问题是:在成功完成XHR之前,我不能停止对链接进行过早重定向。我在活动结束时放了,但它不起作用。

请注意,如果我使用JQuery版本,则效果很好。但是不支持JS vanilla。

请帮我解决这种情况。预先感谢!

var button = document.getElementsByClassName('class');

if (button[0] != undefined) {
    button[0].addEventListener("click", submitDataDemo);
}

function submitDataDemo() {

    ``
    `
    get and format the data
    `
    ``


    var sendDataRequest2 = new XMLHttpRequest();
    sendDataRequest2.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            window.location.href = 'The success page';
        }
    };
    sendDataRequest2.open('POST',
        'server',
        true);
    sendDataRequest2.setRequestHeader('Content-type', 'application/json');
    sendDataRequest2.send(payLoad);

    return false;
}

最佳答案

您需要preventDefault

function submitDataDemo(event) {
  event.preventDefault()

  // ...rest of function
}


https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault

09-25 17:05