I have a php script that uploads a file into a folder :
JavaScript
x
$photo = $_FILES["photo"]['name'];
$background = $_FILES["background"]['name'];
move_uploaded_file($_FILES["photo"]['tmp_name'],"C:/MAMP/htdocs/Projet-Your-Market/uploads/".$photo);
move_uploaded_file($_FILES["background"]['tmp_name'],"C:/MAMP/htdocs/Projet-Your-Market/uploads/".$background);
This works fine, don’t mind the fact that i don’t test if the files exist or other test, it is just to see how uploading a file works.
I also did a script using Ajax to avoid the php file to be loaded and then redirect to my homepage.
JavaScript
$(function(){
$('#form').submit(function(e){
e.preventDefault();
var myData = $(this).serialize()
$.ajax({
url: '/Projet-Your-Market/PHP/createSellerAccount.php',
type: 'POST', // GET or POST
data: myData,
success: function() { // data is the response from your php script
// This function is called if your AJAX query was successful
window.location.href = '/Projet-Your-Market/HTML/homePage.html';
},
error: function() {
// This callback is called if your AJAX query has failed
alert("Error!");
}
});
});
});
These two codes seems to work fine independently but when i combine them the file that i need to upload is not uploaded.
Here is my html code
JavaScript
<div class="title">Create a seller account</div>
<form method="POST" id="form" enctype="multipart/form-data">
<div>Username : <input type="text" name="username"></div>
<div>Password : <input type="password" name="password"></div>
<div>First name : <input type="text" name="fName"></div>
<div>Last name : <input type="text" name="lName"></div>
<div>Email : <input type="text" name="email"></div>
<div>Photo : <input type="file" name="photo"></div>
<div>Background : <input type="file" name="background"></div>
<button id="submitButton" type="submit">Create</button>
</form>
Advertisement
Answer
Instead of serialize() use FormData()
JavaScript
var formData = new FormData(this);
See for more details – Uploading both data and files in one form using Ajax?