Состояние отправки страницы не меняется - PullRequest
0 голосов
/ 02 мая 2020

У меня есть такая форма:

function nametst(str) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("namevalidity").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("POST", "nametst.php?=namerequest" + str, true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send();
    
}

function mailtst(str) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("mailvalidity").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("POST", "mailtst.php?=mailrequest" + str, true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send();
    
}


function submittst(){
    nametst(document.getElementsByName('name')[0].value);
    mailtst(document.getElementsByName('email')[0].value);
    return xls;
    }
    
   var xls;
function submittes(callback){
    httpRequest = new XMLHttpRequest();
    httpRequest.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200){
                 callback(httpRequest.responseText);
                
            
        }
    };
    httpRequest.open('POST', "submitform.php", true);
    httpRequest.send();
}
submittes(function (result) {
    if (result === "yes"){
        xls = true;
        document.getElementById("submitanswer").innerHTML = "true";
    }
    else{
        xls = false;
        document.getElementById("submitanswer").innerHTML = "false";
    }
});
<form method="POST" onsubmit= "return submittst();" action = "welcome.html">  
      Name: <input type="text" name="name" onblur="nametst(value)">
       <span id="namevalidity"></span> </p>
       email: <input type="text" name="email" onblur="mailtst(value)">
       <span id="mailvalidity"></span> </p>
       
    <input type="submit" value="submit">
    <p> form validity: <span id="submitanswer"></span> </p>
и, если имя и адрес электронной почты действительны, submitform. php возвращает "yes".

Когда я введу неправильное имя или адрес электронной почты, появятся ошибки. Все идет нормально. Но валидность формы всегда ложна, и она не изменится, даже когда я нажму кнопку «отправить». Когда я устанавливаю значение по умолчанию для имени и адреса электронной почты, и они действительны, срок действия формы остается верным.

Почему это происходит?
И как я могу это решить?

1 Ответ

0 голосов
/ 03 мая 2020

Итак, я знал, что проблема была из-за метода обратного вызова. поскольку ответа на мой вопрос не было, я буду использовать синхронный режим без этих обратных вызовов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...