DEV Community

loading...

PHP Javascript form formData 50: input text textarea checkbox using ajax (XMLHttpRequest)

antelove19 profile image Falah Al Fitri Updated on ・2 min read

Happy Coding

index.php

    <form method="post" action="process.php" >

        Firstname: <input type="text" name="firstname" />
        <br />

        Lastname: <input type="text" name="lastname" />
        <br />

        Description: <textarea name="description" rows="10" cols="50" ></textarea>
        <br />

        Hobby (single): <input type="checkbox" name="hobby" value="studying" /> Studying
        <br />

        <hr />

        <input type="submit" value="Submit" />

    </form>

    <hr />

display result form server

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

get formHTML element and add onsubmit event, and create formData, then call ajax function with arguments formHTML, formData and output display ("#output")

    <script>

        /* submit form */
        document.querySelector( "form" ).addEventListener( "submit", function (event) {

            event.preventDefault(); // return false


            var formHTML = event.target; // this

            console.log( formHTML ); // formHTML element


            // https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects
            var formData = new FormData( formHTML );

            console.log( formData );


            // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
            // https://www.w3schools.com/xml/xml_http.asp
            // https://www.w3schools.com/js/js_ajax_http.asp

            /* AJAX request */
            ajax( formHTML, formData, "#output" ); // ajax( form, data destination )

        });

    </script>

ajax function

    <script>

        function ajax( form, data, destination )
        {

            if (window.XMLHttpRequest)
            {
                var xhr = new XMLHttpRequest(); /* code for modern browsers */
            }
            else
            {
                var xhr = new ActiveXObject("Microsoft.XMLHTTP"); /* code for old IE browsers */
            }

            xhr.open( form.method, form.action, true ); // ( "post", "process.php", true )
            xhr.send( data );

            xhr.onreadystatechange = function () {
                if ( this.readyState == 4 && this.status == 200 )
                {
                    document.querySelector( destination ).innerHTML = this.responseText;
                }
            };

        }

    </script>

process.php

echo "<pre>";

var_dump($_POST);

echo "</pre>";

Demo repl.it


Thank for reading :)

Discussion (0)

Forem Open with the Forem app