Форма XMLHttpRequest - PullRequest
0 голосов
/ 18 мая 2019

Я строю форму, используя XMLHttpRequest.Это моя проблема:

когда форма отправлена ​​и ответ равен 0 (строка), сообщение, отображаемое в div #output, выглядит так: «Что-то пошло не так ...» (как и должно быть);

Вместо этого, когда форма отправляется и ответ равен 1 (строка), сообщение, отображаемое в div #output, имеет значение «1», а не «SENT!»(как и должно быть).

HTML

<form id="contactform">
<input name="name" type="text">
<input name="surname" type="text">
<input name="email" type="text">
<input type="submit" value="Send">
</form>

<div id="output"></div>

JS

const form = document.getElementById("contactform");
const output = document.getElementById("output");

form.onsubmit = () => {
    var xhr = new XMLHttpRequest();
    var formData = new FormData(form);
    xhr.open('POST', 'https:...');
    xhr.send(formData);
    xhr.onreadystatechange = () => {
        if (this.readyState === 4 && this.status === 200) {
            showResponse(this.response);
        }
    };
    xhr.onerror = () => {
        showResponse("0");
    };
    return false;
};

showResponse = data => {
    var text;
    switch (data) {
        case "0":
            text = "Something went wrong...";
            break;
        case "1":
            text = "SENT!";
            break;
        default:
            text = data;
    }
    output.innerHTML = text;
};

Что не так в моемкод

1 Ответ

0 голосов
/ 18 мая 2019

this справочная проблема, изменить следующим образом:

form.onsubmit = () => {
    var xhr = new XMLHttpRequest();
    var formData = new FormData(form);
    xhr.open('POST', 'https:...');
    xhr.send(formData);
    xhr.onreadystatechange = function() {
        if (this.readyState === 4 && this.status === 200) {
            showResponse(this.response);
        }
    };
    xhr.onerror = () => {
        showResponse("0");
    };
    return false;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...