كيفية استدعاء Web API باستخدام JQuery - الاضافة والتعديل
-
في هذا الدرس نتعلم كيف ممكن نستدعي API بهدف الاضافة insert الى قاعدة البيانات وكيف ممكن نقرا البيانات من View وارسالها الى API ، وبعدها بتعلم كيف ممكن نعمل Update على البيانات الموجودة.
تمام جاهزين نبدأ الدرس: يلا
اولا طريقة الاستدعاء API هي نفسها باستخدام ajax.$ لكن الفرق ان هنا في بيانات نرسلها من خلال API بهدف الاضافة او التعديل.
حتي نفهم الموضوع بشكل اكثر خلونا نعمل في مشروع StudentPortal اضافة وهي View باسم AddCourse (ممكن نعمل صفحة HTML نفس ما عملنا في الدرس السابق)
ننتقل الى CourseController ونعمل Action باسم AddCourseByJQuery وبكون الكود كالتالي:
public ViewResult AddCourseByJQuery() => View();
ملاحظة : سابقا اضفنا action باسم AddCourses وعرفنا كيف نستدعي API من داخل .Net Core
طيب الان دور نعمل View انقر يمين فوق action واختار منها Add New View
الان نضيف الكود التالي على هذا View :
@model CoursesModel
@{ Layout = "_Layout"; ViewBag.Title = "Add a Course By JQuery";}
<h2>Add a Course </h2>
<div class="form-group">
<label for="CourseNumber">Course #:</label>
<input class="form-control" id="CourseNumber" />
</div>
<div class="form-group">
<label for="CourseName">Course Name:</label>
<input class="form-control" id="CourseName" />
</div>
<div class="form-group">
<label for="CourseDescription">Course Description:</label>
<input class="form-control" id="CourseDescription" />
</div>
<div class="form-group">
<label for="Price">Price:</label>
<input class="form-control" id="Price" />
</div>
<div class="form-group">
<label for="Capacity">Capacity:</label>
<input class="form-control" id="Capacity" />
</div>
<div class="text-center panel-body">
<button type="submit" class="btn btn-sm btn-primary" id="AddButton">Add</button>
</div>
<script src="/lib/jquery/jquery.js"></script>
<script src="./lib/jquery/jquery.min.js"></script>
<script src="/lib/jquery/jquery.js"></script>
<script type="text/javascript">
<input class="form-control" id="CourseNumber" />
<input class="form-control" id="CourseName" />
<input class="form-control" id="CourseDescription" />
<input class="form-control" id="Price" />
<input class="form-control" id="Capacity" />
<script type="text/javascript">
$("#AddButton").click(function (e) {
$.ajax({
url: "https://localhost:7081/api/Course/AddCourses",
headers: {
Key: "abc@123"
},
type: "post",
contentType: "application/json",
data: JSON.stringify({
CourseNumber: $("#CourseNumber").val(),
CourseName: $("#CourseName").val(),
CourseDescription: $("#CourseDescription").val(),
Price: $("#Price").val(),
Capacity: $("#Capacity").val()
}),
success: function (result, status, xhr) {
location.href = "GetAllcourse";;
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.status);
alert(errorThrown);
if (jqXHR.status == 500) {
alert(Internal error: + jqXHR.responseText);
} else {
alert(Unexpected error. + jqXHR.responseText);
}
}
});
});
</script>
bool Authenticate()
{
var allowedKeys = new[] { "abc@123", "abc225@@", "AbcABC@@" };
StringValues key = Request.Headers["Key"];
int count = (from t in allowedKeys where t == key select t).Count();
return count == 0 ? false : true;
}
[HttpPost]
[Route("AddCourses")]
public async Task<ActionResult> PostCoursesModel([FromBody] CoursesModel coursesModel)
{
....
}
location.href = "GetAllcourse";;



https://localhost:7242/Course/GetAllcourse

@{
ViewData["Title"] = "GetAllcourses";
}
<table class="table table-sm table-striped table-bordered m-2">
<thead>
<tr>
<th>Course ID</th>
<th>CourseNumber</th>
<th>CourseName</th>
<th>CourseDescription</th>
<th>Price</th>
<th>Capacity</th>
<th>Update</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script src="/lib/jquery/jquery.js"></script>
<script src="/lib/jquery/jquery.min.js"></script>
<script src="/lib/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
ShowAllCourses();
function ShowAllCourses() {
$("table tbody").html("");
$.ajax({
type: "GET",
url: "https://localhost:7081/api/Course/GetAllCourses",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
//crossDomain: true,
success: function (result, status, xhr) {
$.each(result, function (index, value) {
$("tbody").append($("<tr>"));
appendElement = $("tbody tr").last();
appendElement.append($("<td>").html(value["coursesId"]));
appendElement.append($("<td>").html(value["courseNumber"]));
appendElement.append($("<td>").html(value["courseName"]));
appendElement.append($("<td>").html(value["courseDescription"]));
appendElement.append($("<td>").html(value["price"]));
appendElement.append($("<td>").html(value["capacity"]));
appendElement.append($("<td>").html("<img class=\"Edit\" src=\"/icon/edit.png\" /></a>"));
appendElement.append($("<td>").html("<img class=\"delete\" src=\"/icon/delete.jpg\" />"));
});
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 500) {
alert(@@#Internal error: @@# + jqXHR.responseText);
} else {
alert(@@#Unexpected error.@@# + jqXHR.responseText);
}
}
});
}
$("table").on("click", "img.delete", function () {
var CourseId = $(this).parents("tr").find("td:nth-child(1)").text();
$.ajax({
type: "delete",
url: "https://localhost:7081/api/Course/DeleteCourse?id="+CourseId,
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result, status, xhr) {
ShowAllCourses();
},
error: function (xhr, status, error) {
console.log(xhr)
}
});
});
$("table").on("click", "img.Edit", function () {
var CourseId = $(this).parents("tr").find("td:nth-child(1)").text();
location.href = "UpdateCourseByJQuery?id="+CourseId ;
});
});
</script>
public ViewResult UpdateCourseByJQuery() => View();
@model CoursesModel
@{ Layout = "_Layout"; ViewBag.Title = "Edit a Course By JQuery";}
<h2>Edit a Course </h2>
<div class="form-group">
<label for="CoursesId"></label>
<input type="text" class="form-control" id="CoursesId" readonly />
</div>
<div class="form-group">
<label for="CourseNumber">Course #:</label>
<input class="form-control" id="CourseNumber" />
</div>
<div class="form-group">
<label for="CourseName">Course Name:</label>
<input class="form-control" id="CourseName" />
</div>
<div class="form-group">
<label for="CourseDescription">Course Description:</label>
<input class="form-control" id="CourseDescription" />
</div>
<div class="form-group">
<label for="Price">Price:</label>
<input class="form-control" id="Price" />
</div>
<div class="form-group">
<label for="Capacity">Capacity:</label>
<input class="form-control" id="Capacity" />
</div>
<div class="text-center panel-body">
<button type="submit" class="btn btn-sm btn-primary" id="UpdateButton">UpdateButton</button>
</div>
<script src="/lib/jquery/jquery.js"></script>
<script src="./lib/jquery/jquery.min.js"></script>
<script src="/lib/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
GetCourse();
function GetCourse() {
let params = (new URL(document.location)).searchParams;
let id = params.get("id");
$.ajax({
url: "https://localhost:7081/api/Course/GetCoursesById?id=" + id,
type: "get",
contentType: "application/json",
success: function (result, status, xhr) {
$.each(result, function (index, value) {
$("#CoursesId").val(value["coursesId"]);
$("#CourseNumber").val(value["courseNumber"]);
$("#CourseName").val(value["courseName"]);
$("#CourseDescription").val(value["courseDescription"]);
$("#Price").val(value["price"]);
$("#Capacity").val(value["capacity"]);
});
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 500) {
alert(@@#Internal error: @@# + jqXHR.responseText);
} else {
alert(@@#Unexpected error.@@# + jqXHR.responseText);
}
}
});
}
$("#UpdateButton").click(function (e) {
let params = (new URL(document.location)).searchParams;
let id = params.get("id");
data = new FormData();
data.append("CourseId", $("#CourseId").val());
data.append("CourseNumber", $("#CourseNumber").val());
data.append("CourseName", $("#CourseName").val());
data.append("CourseDescription", $("#CourseDescription").val());
data.append("Price", $("#Price").val());
data.append("Capacity", $("#Capacity").val());
alert(data);
$.ajax({
url: "https://localhost:7081/api/Course/UpdateCourses",
type: "post",
data: data,
contentType: "application/json",
success: function (result, status, xhr) {
location.href = "GetAllcourse";;
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 500) {
alert(@@#Internal error: @@# + jqXHR.responseText);
} else {
alert(@@#Unexpected error.@@# + jqXHR.responseText);
}
}
});
});
});
</script>
let params = (new URL(document.location)).searchParams;
let id = params.get("id");
اترك تعليقك