最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Vanilla JavaScript AJAX form submit - Stack Overflow

programmeradmin4浏览0评论

I need help to make a form submit using AJAX in Vanilla JavaScript (No jQuery). I have this jQuery Code that i need converted to JavaScript.

  $(document).ready(function() {
    $('.myForm').submit(function (event) {
      var data = $(this);
      $.ajax({
        type: data.attr('method'),
        url: data.attr('action'),
        data: data.serialize(),
        success: function (data) {

        }
      });
      event.preventDefault();
    });
  });

I need help to make a form submit using AJAX in Vanilla JavaScript (No jQuery). I have this jQuery Code that i need converted to JavaScript.

  $(document).ready(function() {
    $('.myForm').submit(function (event) {
      var data = $(this);
      $.ajax({
        type: data.attr('method'),
        url: data.attr('action'),
        data: data.serialize(),
        success: function (data) {

        }
      });
      event.preventDefault();
    });
  });
Share Improve this question asked Jan 25, 2022 at 1:08 Tim LevinssonTim Levinsson 5972 gold badges8 silver badges20 bronze badges 2
  • w3schools./js/js_ajax_examples.asp – Spencer May Commented Jan 25, 2022 at 1:21
  • 2 Does this answer your question? How can I make an AJAX call without jQuery? – Don't Panic Commented Jan 25, 2022 at 1:32
Add a ment  | 

2 Answers 2

Reset to default 13

You can use the built-in Fetch API for AJAX calls and FormData to parse your form.

Other than that, just replace your jquery with event listeners, query selectors, and attribute getters.

document.addEventListener('DOMContentLoaded', function() {
  document.querySelector('.myForm').addEventListener('submit', function (event) {
    var data = this;
    fetch(data.getAttribute('action'), {
      method: data.getAttribute('method'),
      body: new FormData(data)
    }).then(res=>res.text())
      .then(function (data) {
        
      });
    event.preventDefault();
  });
});
// Document loaded event listener
window.addEventListener('DOMContentLoaded', () => {

    // Get al forms with a specific CSS class
    var forms = document.querySelectorAll('.ajax-form');
    if (forms && forms.length) {
        forms.forEach(form => {

            form.addEventListener('submit', function(evt) {

                // Prevent form submission
                evt.preventDefault();           
                
                // Fetch data from {url}
                var xhr = new XMLHttpRequest();
                xhr.withCredentials = false;
            
                xhr.addEventListener('readystatechange', function() {
                    if (this.readyState === 4) {
    
                        // Fetch and process data
                        var data = JSON.parse(this.responseText);
                        console.log(data);
                    }
                });
    
                // Get form data
                var data = new FormData(form),
                    method = form.getAttribute('method'),
                    url = form.getAttribute('action');
    
                // Debug
                console.log({
                    data: data,
                    method: method,
                    url: url
                });
            
                // Send a GET/POST/PUT/DELTE request
                xhr.open(method, url);
                xhr.send(data);
            })
        });
    }
});
发布评论

评论列表(0)

  1. 暂无评论