Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error in Sending Form file with form using AJAX

Tags:

I am trying to submit form using AJAX that contains CSV File. So the idea is sending the form using ajax, process it in different file by generating a table and call back the processed table back into the page.

What i Have is this,

<form id="uploadXls" action="" method="post" enctype="multipart/form-data">       <input id="uploaderFile" type="file" class="file"><br/>       <button type="button" class="btn btn-orange pull-right" name="btnSubmit" id="btnSubmit"><i class="fa fa-download"></i> SHOW FILE CONTENT</button> </form> 

and the JavaScript is,

$("#btnSubmit").click(function(){             $.ajax({                 type: 'POST',                 url: '../../content/maindiv_content/drawing/divpages/process_xls_file.php',                 data: new FormData(this),                 contentType: false,                 cache: false,                 processData: false,                 success: function (response, textStatus, jqXHR) {                   $("#showFileContentTable").html(data);                 }             });         });  

and im getting this kind of error in firebug,

TypeError: Argument 1 of FormData.constructor does not implement interface HTMLFormElement. http://infserver/WeltesTankage/dist/js/jquery-1.10.2.min.js line 4 > eval Line 14 

What am i doing wrong here ? Please help me

like image 251
Konz Mama Avatar asked Mar 05 '15 08:03

Konz Mama


People also ask

Can we submit form using AJAX?

We can submit a form by ajax using submit button and by mentioning the values of the following parameters. type: It is used to specify the type of request. url: It is used to specify the URL to send the request to. data: It is used to specify data to be sent to the server.

What is AJAX form submission?

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.

Should I use AJAX for forms?

If a certain action will change a lot of UI elements or needs to poll a lot of data to be rendered, I would go with form submission. On the other hand, if a certain action is used for simple actions, like populating a select box or improving user experience, then I would go for an AJAX call.


2 Answers

Don't pass the files into the constructor, but use append, like:

var formData = new FormData(); formData.append('file', $('input[type=file]')[0].files[0]); data:  formData 
like image 149
Naqeeb Sial Avatar answered Sep 18 '22 19:09

Naqeeb Sial


You can use this approach too.

var form = $('form').get(0);  

this code returns a jQuery object($('form')) and pass a HTML element to FormData (get(0)).

then in ajax request: data: new FormData(form),

like image 24
WhiteOne Avatar answered Sep 20 '22 19:09

WhiteOne