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
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.
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.
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.
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
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),
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With