XMLHttpRequest do wysłania formularza HTML

Obecne ustawienia

Mam taki formularz HTML.

<form id="demo-form" action="POST" method="post-handler.php">
   <input type="text" name="name" value="previousValue"/>
   <button type="submit" name="action" value="dosomething">Update</button>
</form>

Mogę mieć wiele z tych formularzy na stronie.

Moje pytanie

Jak przesłać ten formularz asynchronicznie, a nie zostać przekierowany lub odświeżyć stronę? Wiem, jak używaćXMLHttpRequest. Problem, który mam, polega na pobieraniu danych z kodu HTML w javascript, a następnie umieszczaniu ich w łańcuchu post-post. Oto metoda, której obecnie używam dla mojego zXMLHttpRequest`'s.

function getHttpRequest() {
    var xmlhttp;
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    return xmlhttp;
}

function demoRequest() {
       var request = getHttpRequest();
       request.onreadystatechange=function() {
             if (request.readyState == 4 && request.status == 200) {
                   console.log("Response Received");
             }
       }
       request.open("POST","post-handler.php",true);
       request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
       request.send("action=dosomething");
}

Na przykład powiedz metodę javascriptdemoRequest() został wywołany po kliknięciu przycisku przesyłania formularza, w jaki sposób uzyskać dostęp do wartości formularza z tej metody, a następnie dodać go doXMLHttpRequest?

EDYTOWAĆ

Próbując zaimplementować rozwiązanie z poniższej odpowiedzi, zmodyfikowałem swój formularz w ten sposób.

<form id="demo-form">
       <input type="text" name="name" value="previousValue"/>
       <button type="submit" name="action" value="dosomething" onClick="demoRequest()">Update</button>
</form>

Jednak po kliknięciu przycisku nadal próbuje mnie przekierować (do miejsca, w którym nie jestem pewien), a moja metoda nie jest wywoływana?

Odsłuch zdarzeń przycisku

document.getElementById('updateBtn').addEventListener('click', function (evt) {
                                evt.preventDefault();

                                // Do something
                                updateProperties();

                                return false;
                            });

questionAnswers(6)

yourAnswerToTheQuestion