S
S
survivor20052020-01-08 20:40:07
JavaScript
survivor2005, 2020-01-08 20:40:07

Ajax how to send data from a form?

Good afternoon, I've reached asynchronous js, in particular, I'm interested in sending data from a form.
There is a simple form:

<form action="#" name="form" method="POST">
        <input type="text" name="name" value="blalba">
        <input type="email" name="email" value="[email protected]">
        <input type="tel" name="phone" value="34343">
        <button type='submit'>отправить</button>
    </form>

and wrote a script:
let sendingStatus = {
    sending: 'отправка...',
    sent: "отправлено",
    fail: "Что то пошло не так...."
}



let form = document.forms.form,
input= form.querySelectorAll('input'),
statusMessage = document.createElement('div');
statusMessage.classList.add('status');

form.addEventListener('submit',(event)=>{
     event.preventDefault();
    form.append(statusMessage);
   
    let xhr = new XMLHttpRequest();
    xhr.open("POST", "form/mail.php",true);
    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    let formData = new FormData(form);
     xhr.send(formData);
    xhr.onreadystatechange=()=>{
        if(xhr.readyState<4){
            statusMessage.innerHTML=sendingStatus.sending;
        }else if(xhr.readyState===4){
            if(xhr.status == 200 && xhr.status<300){
                statusMessage.innerHTML=sendingStatus.sent;
                for(let i of input){
                    i.value='';
                }
            }else statusMessage.innerHTML=sendingStatus.fail;
        }
    };
 });


The code works, but the data is not taken from the form, the form comes without data. Do not tell me how to transfer from?
Thank you.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
E
Eugene, 2020-01-08
@survivor2005

Ran your code, it looks like the form data is being submitted.
PS: If you use arrow functions, why not use modern fetch, async/await?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question