I have been stuck for hours trying to find the bugs when trying to insert data into database using ajax. When I click submit button, it just reloads but does not save. I am confused about this problem. I have searched many blogs but did not find accurate solution to this problem.
Model class
public class Semester
{
[Key]
public int SemesterId { get; set; }
[Display(Name = "Semester Code")]
[Required(ErrorMessage = "please enter semester code")]
public string SemesterCode { get; set; }
[Display(Name = "Semester Name")]
[Required(ErrorMessage = "Please enter semeter name")]
public string SemesterName { get; set; }
}
Controller [HttpGet]
public ActionResult SaveSemesterGet()
{
return View();
}
public JsonResult AsCreateSemester(Semester semester){
db.Semesters.Add(semester);
db.SaveChanges();
return Json(semester, JsonRequestBehavior.AllowGet);
}
Index view:
@model CampusManagementApp.Models.Semester
<h2>SaveSemesterGet</h2>
<form method="POST">
@Html.AntiForgeryToken()
<div >
<h4>Semester</h4>
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.SemesterCode, new { @class = "control-
label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.SemesterCode)
@Html.ValidationMessageFor(model => model.SemesterCode)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.SemesterName, new { @class = "control-
label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.SemesterName)
@Html.ValidationMessageFor(model => model.SemesterName)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" id="btn" value="SAVE"/>
</div>
</div>
</div>
<div>
@* @Html.ActionLink("Back to List", "Index")*@
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script>
$(document).ready(function() {
$("#btn").click(function(a) {
a.preventDefault();
var code = $("#SemesterCode").val();
var name = $("#SemesterName").val();
var jsonData = {
SemesterCode: code,
SemesterName: name
};
$.ajax({
type: "POST",
url: '@Url.Action("AsCreateSemester", "Semester")',
data: JSON.stringify(jsonData),
dataType:"json",
success:function(data) {
alert(data.SemesterName+"successfully inserted");
},
failure: function () {
alert("not successfull");
}
});
</script>
What can be done to get rid of this problem?