Code has been added to clipboard!

How to Create AJAX Form and Posts for Your Websites

Reading time 2 min
Published Jul 3, 2019
Updated Sep 27, 2019

AJAX form submitting allows you to send data in the background, eliminating the need to reload websites to see the updates. This makes the user experience much smoother.

By letting the browser and server exchange information without disturbing other activities, it saves both time and resources you would otherwise waste constantly reloading your site.

AJAX Form: Main Tips

  • AJAX stands for Asynchronous JavaScript and XML.
  • By sending asynchronous requests, it allows an application to refresh a part of a page without having to reload the whole document.
  • Using AJAX, forms can be made more functional and dynamic.

Form With Options to Select

First of all, we create a simple input form using HTML:

Example
<form> 
      <select name="users" onchange="showUser(this.value)"> 
        <option value="">Select a person:</option> 
        <option value="johny">Johny Dawkins</option> 
        <option value="margaret">Margaret Johnson</option> 
        <option value="julie">Julie Doodley</option> 
      </select>
    </form><br>
    <div id="txt_hint">
      <strong>This is where the information will appear</strong>
    </div>

In it, the user can choose one of three possible options from a dropdown menu. When they do, an onchange event is triggered.

We also create a div element as an area for the additional information. However, that functionality will not work yet. To enable it, we have to call the showUser() function:

Example
function showUser(str) {    
    if (str == ""){        
      document.getElementById("txt_hint").innerHTML = "";
      return;
    } else {
      if (window.XMLHttpRequest) { 
        // script for IE 7+ and other popular browsers
        xmlhttp = new XMLHttpRequest();
      } else {            
        // script for IE 5 and 6
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }      
      // check if server response is ready  
      xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        // get the element in which we will display our suggestions
        document.getElementById("txt_hint").innerHTML = xmlhttp.responseText;}
      }; 
      xmlhttp.open("GET","getuser.php?q="+str, true);
      xmlhttp.send();
    }
  }

To enable our AJAX form, we create an XMLHttpRequest. The triggered onchange event will call the txt_hint function. The additional information about the person you chose will then be displayed below the input area.

Text Input AJAX form

In our next example, we will create a form with a text field:

Example
<body>
    <p><strong>Try typing a name into the below input field:</strong></p>
    <form> 
      First name: <input type="text" onkeyup="showHint(this.value)">
    </form>
    <p>Possible suggestions: <span id="txt_hint"></span></p>
  </body>

The form will recognize the same values we had in our first example. However, for it to show additional information, we will have to call showHint() function:

Example
function showHint(str) {
    //check if input field is empty
    if (str.length == 0) {
      document.getElementById("txt_hint").innerHTML = "";
      return;
    } else {
      //if the field is not empty, create an XMLHttpRequest to get suggestions
      var xmlhttp = new XMLHttpRequest();
      // server response is ready, we call the function
      xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
          document.getElementById("txt_hint").innerHTML = xmlhttp.responseText;
        }
      };
      xmlhttp.open("GET", "/learn/best-code-editor-example?q=" + str, true); 
      xmlhttp.send();
    }
  }

By checking the str.length variable, the form identifies whether the field is empty or not. If it is, we discard the txt_hint placeholder and exit the function.

If the input text field has something in it, we can make an XMLHttpRequest object, and set up the function to be ready to execute once the server response is prepared.

Note: the str variable is holding the content of our input text field.

AJAX Form: Summary

  • AJAX sends asynchronous requests that help browser and server exchange information. Thus, you can see updates without reloading the page.
  • It saves you time and simplifies user experience, as there is no need to refresh pages constantly.
  • With AJAX, form submittion is smoother and more user-friendly.
What Is JavaScript Used For?
Tutorial
Introduction
Output
Syntax
Comment
Commands
Operators
Comparison and Logical Operators
Data Types
Math.random()
Type Conversion
Function Definitions
Events
Objects
Object Properties
Prototype
Array
Sorting Arrays
Strings
Numbers
Number Format
Math Object
Onclick Event
Date
Date Formats
Scope
Regular Expressions
Reserved Words
Common Mistakes
Performance
Forms
Form Validation
Window: The Browser Object Model
Popup Boxes
Cookies
JSON
AJAX Introduction
AJAX Form
Automatic File Download
Functions
Array Methods
String Methods
Date Methods
Timing Events
Cheat Sheet
JavaScript in HTML
HTML DOM Methods
HTML DOM Changing HTML
HTML DOM Animation
HTML DOM EventListener
HTML DOM Navigation
HTML DOM NodeList
HTML DOM Element Nodes
Array Functions
Boolean
Calling a Function
Date Functions
Global Objects
Input Text
Operator
Statements
String Functions
Math
Math.random
Number
RegEx
alert
array.filter
array.length
array.map
array.reduce
array.push
array.sort
break and continue
className
confirm
decodeURIComponent
for
forEach
if
indexOf
innerHTML
location.reload
number.toString
onclick
onload
parseInt
prompt
replace
setAttribute
setInterval
setTimeout
slice
splice
string.includes
string.indexOf
string.split
style.display
submit
substr
substring
switch
test
throw, try and catch
toLowerCase
toUpperCase
use strict
while
window.history
window.location
window.navigator
window.screen