Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Lỗi load dữ liệu Ajax trong MVC5
17:22 28-10-2017
666 lượt xem
3 bình luận
19:33 03-01-2018
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using Ajax_Example_2.Models;
@model IEnumerable<Ajax_Example_2.Models.NhanVien>
<div id="menu1" class="tab-pane fade in active">
<p>
<button type="button" id="btnCreateNew" class="btn btn-primary" data-toggle="modal" data-target="#nhanvienModal">Tạo Mới Nhân Viên</button>
</p>
<table id="listNhanViens" class="table">
<thead>
<tr>
<td><label>Mã Nhân Viên</label></td>
<td><label>Tên Nhân Viên</label></td>
<td><label>Số Điện Thoại</label></td>
<td><label>Giới Tính</label></td>
<td><label>Chức Vụ</label></td>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.MaNV)</td>
<td>@Html.DisplayFor(modelItem => item.TenNV)</td>
<td>@Html.DisplayFor(modelItem => item.SDT)</td>
<td>@Html.DisplayFor(modelItem => item.GioiTinh)</td>
<td>@Html.DisplayFor(modelItem => item.ChucVu)</td>
</tr>
}
</tbody>
</table>
<div class="modal fade" id="nhanvienModal">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title"><label id="title"></label></h4>
</div>
<div class="modal-body">
<div class="form-horizontal">
<div class="form-group">
</div>
<div class="form-group">
<div class="col-md-10">
<label>Tên Nhân Viên</label>
<input type="text" id="TenNV" class="form-control" />
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label>SĐT</label>
<input type="text" id="SDT" class="form-control" />
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label>Giới Tính</label>
<input type="text" id="GioiTinh" class="form-control" />
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label>CMND</label>
<input type="text" id="CMND" class="form-control" />
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label>Chức Vụ</label>
<input type="text" id="ChucVu" class="form-control" />
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label>Cấp Chức Vụ</label>
<input type="text" id="CapChucVu" class="form-control" />
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" id="btnClose" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" id="btnSave" class="btn btn-primary">Save</button>
</div>
</div>
</div>
</div>
</div>
<div id="menu2" class="tab-pane fade">
<h3>Menu 2</h3>
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.</p>
</div>
@section Scripts{
<script type="text/javascript">
$(document).ready(function() {
getNhanViens();
})
var isUpdatable = false;
function getNhanViens() {
$.ajax({
url: '/Admin/GetNhanViens',
type: 'GET',
data: 'json',
success: function(data) {
var rows = '';
$.each(data, function(i, item) {
rows += "<tr>"
rows += "<td>" + item.MaNV + "</td>"
rows += "<td>" + item.TenNV + "</td>"
rows += "<td>" + item.GioiTinh + "</td>"
rows += "<td>" + item.CMND + "<td>"
rows += "<td>" + item.ChucVu + "</td>"
rows += "<td>" + item.CapChucVu + "</td>"
rows += "<td><button type='button' id='btnEdit' class='btn btn-default' onclick='return getDetailNhanVien(" + item.MaNV + ")'>Edit</button> <button type='button' id='btnDelete' class='btn btn-danger' onclick='return deleteNhanVien(" +
item.MaNV +
")'>Delete</button></td>"
rows += "</tr>";
$("#listNhanViens tbody").html(rows);
});
},
error: function(err) {
alert("Error: " + err.responseText);
}
});
}
function getDetailNhanVien(nv) {
$("#title").text("Details");
$.ajax({
url: '/Admin/Get/' + nv,
type: 'GET',
datatype: 'json',
success:function(data) {
$("#MaNV").val(data.MaNV);
$("#TenNV").val(data.TenNV);
$("#SDT").val(data.SDT);
$("#GioiTinh").val(data.GioiTinh);
$("#CMND").val(data.CMND);
$("#ChucVu").val(data.ChucVu);
$("#CapChucVu").val(data.CapChucVu);
isUpdatable = true;
$("#nhanvienModal").modal('show');
},
error: function (err) {
alert("Error: " + err.responseText);
}
});
}
//Insert và Update
$("#btnSave").click(function (e) {
var data = {
MaNV: $("#ManV").val(),
TenNV: $("#TenNV").val(),
SDT: $("#SDT").val(),
GioiTinh: $("#GioiTinh").val(),
CMND: $("#CMND").val(),
ChucVu: $("#ChucVu").val(),
CapChucVu: $("#CapChucVu").val()
}
if (!isUpdatable) {
$.ajax({
url: '/Admin/Create/',
type: 'POST',
dataType: 'json',
data: data,
success: function (data) {
getNhanViens();
$("#nhanvienModal").modal('hide');
clear();
},
error: function (err) {
alert("Error: " + err.responseText);
}
})
}
else {
$.ajax({
url: '/Admin/Update/',
type: 'POST',
dataType: 'json',
data: data,
success: function (data) {
getNhanViens();
isUpdatable = false;
$("#nhanvienModal").modal('hide');
clear();
},
error: function (err) {
alert("Error: " + err.responseText);
}
})
}
});
function deleteNhanVien(nv) {
var confirmDelete = confirm("Do you want to delete this employee ?");
if (confirmDelete) {
$.ajax({
url: "/Admin/Delete/" + nv,
type: "POST",
dataType: 'json',
success: function (data) {
getNhanViens();
location.reload();
},
error: function (err) {
alert("Error: " + err.responseText);
}
});
}
}
$("#btnCreateNew").click(function () {
$("#title").text("Create New");
})
// hàm đóng modal
$("#btnClose").click(function () {
clear();
});
// hàm reset giá trị về rỗng sau khi thực hiện Insert hoặc Update
function clear() {
//$("#Id").val("");
//$("#Name").val("");
//$("#Author").val("");
//$("#Price").val("");
$("#ManV").val("");
$("#TenNV").val("");
$("#SDT").val("");
$("#GioiTinh").val("");
$("#CMND").val("");
$("#ChucVu").val("");
$("#CapChucVu").val("");
}
</script>
}
Trang trên là Trang Index.
Ở dưới đây là Controller của em.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Ajax_Example_2.Models;
using System.Data.Entity;
namespace Ajax_Example_2.Controllers
{
public class AdminController : Controller
{
// GET: Admin
private QuanLyNhaAnEntities _context;
public AdminController()
{
_context = new QuanLyNhaAnEntities();
}
public ActionResult Index()
{
var nvs = _context.NhanViens.ToList();
return View(nvs);
}
//Trả về danh sách những nhân viên
public ActionResult GetNhanViens()
{
var nv = _context.NhanViens.ToList();
return Json(nv, JsonRequestBehavior.AllowGet);
}
//Trả về tham số mã nv truyền vào
public ActionResult Get(int manv)
{
var nv = _context.NhanViens.ToList().Find(m => m.MaNV == manv);
return Json(nv, JsonRequestBehavior.AllowGet);
}
//TạoMới Nhân Viên
[HttpPost]
public ActionResult Create([Bind(Exclude = "MaNV")] NhanVien nv)
{
if (ModelState.IsValid)
{
_context.NhanViens.Add(nv);
_context.SaveChanges();
}
return Json(nv, JsonRequestBehavior.AllowGet);
}
//Edit NV
[HttpPost]
public ActionResult Update(NhanVien nv)
{
if (ModelState.IsValid)
{
_context.Entry(nv).State = EntityState.Modified;
_context.SaveChanges();
}
return Json(nv, JsonRequestBehavior.AllowGet);
}
//DeleteNV
[HttpPost]
public ActionResult Delete(int ma)
{
var nv = _context.NhanViens.ToList().Find(m => m.MaNV == ma);
if (nv != null)
{
_context.NhanViens.Remove(nv);
_context.SaveChanges();
}
return Json(nv, JsonRequestBehavior.AllowGet);
}
/// <summary>
}
}
Hiện tại em đang học về MVC. Đang thực hiện Thêm Sửa Xóa trên Ajax. Dù đã cố gắng rất nhiều và sữa học theo code trên Google nhưng cứ mỗi lần load lên nó lại hiện :
bạn thử ajax form xem có thể do code của bạn
bạn đặc RenderSession bên ngoài layout rồi dẫn key vào trong view nhé có thể là do ajax chưa được load khi load form
Chào bạn, nếu bạn muốn thực hành Ajax Mvc mình xin góp ý bạn nên tham khảo thêm "Ajax BeginForm" như vậy sẽ hợp lý hơn với cấu trúc Mvc.
Xem code bạn đã post mình phát hiện một số chỗ khác nhau trong code của bạn, bạn xem lại csdl để lấy đúng nha bạn.
Lúc load page với model :
Load với ajax getNhanViens()
Số lượng cột khác nhau, nội dung một số cột khác nhau, bạn có thể thấy nếu so sánh 2 đoạn code trên. Có thể lỗi vì lý do trên, vì mình không chạy thử nên chỉ đoán thôi ^^.
Một phát hiện khác :
- Hàm ajax getDetailNhanVien :
Mình không tìm thấy control nào có id = 'MaNV', tương tự cho một các hàm còn lại. Bạn xem lại để bind cho đúng nha bạn