I have a basic input form consisting of name, age, email, password. I'm trying to pass that from the HTML to Javascript, which then converts it into a JSON string in an external JSON file that I can then pull from later. I can't seem to get it to post the input data to my json file. My JSON file is named 'formdata', and it is in the same directory as my html/javascript, as well as my jquery. Do you see what could be causing it?
<main>
<form id="myform" type="post">
<fieldset>
<legend>Sign Up</legend>
<p>Please sign up for our website here!</p>
<div class="elements">
<label for="name">Name :</label>
<input required="required" type="text" onfocus="this.value=''" value="Please enter your name here" name="name" size="25" />
</div>
<div class="elements">
<label for="username">Username :</label>
<input required="required" type="text" onfocus="this.value=''" value="Please enter your email here" name="email" size="25" />
</div>
<div class="elements">
<label for="email">Email :</label>
<input required="required" type="text" onfocus="this.value=''" value="Please enter your email here" name="email" size="25" />
</div>
<div class="elements">
<label for="password">Password :</label>
<input required="required" type="password" value="" name="password" size="32" minlength="6" maxlength="32" />
</div>
<div class="elements">
<label for="age">Age :</label>
<input required="required" type="number" value="" id="age" name="age" size="3" />
</div>
<div class="elements">
<label for="gender">Gender :</label>
<input type="radio" name="gender" value="Male" checked="checked" id="r1"> Male
<input type="radio" name="gender" value="Female" id="r2"> Female
</div>
<div class="submit">
<input type="submit" id="submit" name="submit" class="btn" value="Send" />
</div>
</fieldset>
</form>
<script type="text/javascript">
$(document).ready(function() {
$("#btn").click(function(e) {
var jsonData = {};
var formData = JSON.stringify($("#formdata").serializeArray());
$.each(formData, function() {
if (jsonData[this.name]) {
if (!jsonData[this.name].push) {
jsonData[this.name] = [jsonData[this.name]];
}
jsonData[this.name].push(this.value || '');
} else {
jsonData[this.name] = this.value || '';
}
});
console.log(jsonData);
$.ajax({
url: "action.php",
type: "POST",
data: formData,
success: function(){},
dataType: "json",
contentType : "application/json",
});
e.preventDefault();
});
});
</script>
<script src="https://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" crossorigin="anonymous"></script>
</main>