javascript - Why FormData object empty -


when run below code , empty formdata , because of form complex ? how should change code ?

it seems if use tags form , input , label construct form , formdata object not empty . maybe can manually construct line , send via xmlhttprequest , have better way ?

any appreciate , thank time .

html:

<form enctype="multipart/form-data" id="inquiry" name="inquiry" method="post" role="form"><!--action="processdata.php"-->     <div class="row">         <div class="form-group">             <div class="col-md-6">                 <label for="name">your name</label>                 <input type="text" class="form-control" id="name" maxlength="100">             </div>             <div class="col-md-6">                 <label for="email">your email address</label>                 <input type="text" class="form-control" id="email" maxlength="100">             </div>         </div>     </div>     <div class="row">         <div class="form-group">             <div class="col-md-12">                 <label for="subject">subject</label>                 <input type="text" class="form-control" id="subject" maxlength="100">             </div>         </div>     </div>     <div class="row">         <div class="form-group">             <div class="col-md-12">                 <label for="message">your message</label>                 <textarea class="form-control" id="message" maxlength="5000"></textarea>             </div>         </div>     </div>     <div class="row">         <div class="col-md-12">             <button id="post-message" type="submit">                 <span>send message</span>             </button>         </div>      </div> </form> 

js:

'use strict'; var contact = function() {   var senddata = function() {     var xmlhttp = new xmlhttprequest() ;     var url = "/php/processdata.php";     var inquiryform = document.forms.nameditem("inquiry");     var fd = new formdata(inquiryform);     xmlhttp.open("post", url , true);     xmlhttp.onreadystatechange = function() {       if(xmlhttp.readystate == 4 && xmlhttp.status == 200) {         var returndata = xmlhttp.responsetext ;       }     };     xmlhttp.send(fd);      (var [key, value] of fd.entries()) {       console.log(key, value);     }   };    var windowloadhandler = function() {     window.addeventlistener("load",function(){       var inquiryform = document.getelementbyid("inquiry");       inquiryform.addeventlistener("submit",function(event){         event.preventdefault();         senddata();       });     });   };    return {     init : function(){       windowloadhandler();     }   }; }(); 

you'll have add names form elements, otherwise won't sent form.

here's code changes make work

'use strict';  var contact = (function() {    var senddata = function(form) {      var xmlhttp = new xmlhttprequest();      var url = "/php/processdata.php";      var fd = new formdata(form);        xmlhttp.open("post", url, true);        xmlhttp.onreadystatechange = function() {        if (xmlhttp.readystate == 4 && xmlhttp.status == 200) {          var returndata = xmlhttp.responsetext; // note, async, can't used outside function         }      }        xmlhttp.send(fd);      console.log()      (var pair of fd.entries()) {        console.log(pair[0] + ', ' + pair[1]);      }    }      var windowloadhandler = function() {      var inquiryform = document.getelementbyid("inquiry");        inquiryform.addeventlistener("submit", function(event) {        event.preventdefault();        senddata(this);      });    }      return {      init: function() {        windowloadhandler();      }    };  })();    $(document).ready(function() {    contact.init();  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>  <form enctype="multipart/form-data" id="inquiry" name="inquiry" method="post" role="form">    <!--action="processdata.php"-->    <div class="row">      <div class="form-group">        <div class="col-md-6">          <label for="fullname">your name</label>          <input type="text" class="form-control" id="fullname" name="fullname" maxlength="100">        </div>        <div class="col-md-6">          <label for="email">your email address</label>          <input type="text" class="form-control" id="email" maxlength="100" name="email">        </div>      </div>    </div>    <div class="row">      <div class="form-group">        <div class="col-md-12">          <label for="subject">subject</label>          <input type="text" class="form-control" id="subject" maxlength="100" name="subject">        </div>      </div>    </div>    <div class="row">      <div class="form-group">        <div class="col-md-12">          <label for="message">your message</label>          <textarea class="form-control" id="message" maxlength="5000" name="message"></textarea>        </div>      </div>    </div>    <div class="row">      <div class="col-md-12">        <button id="post-message" type="submit">                  <span>send message</span>              </button>      </div>    </div>  </form>

by way you're calling contact.init() wanted iife.
note name poor name variable, , worse name/id element, window.name exists.

see how form passed event handler, function.


Comments

Popular posts from this blog

neo4j - finding mutual friends in a cypher statement starting with three or more persons -

php - How to remove letter in front of the word laravel -

minify - Minimizing css files -