2 ضمیمه
عدم دریافت اطلاعات از اکشن متد و عدم نمایش آنها در myView.cshtml
سلام و سپاس. یک مشکل ابتدایی در دریافت اطلاعات از اکشن متد موجود در Area و نمایش آن توسط Jquery/Ajax در صفحه View دارم. از asp.net core 3.1 استفاده میکنم. این کنترولر هست که بدرستی اطلاعات را دریافت میکنه:
[Area("Admin")]
public class CategoryController : Controller
{
#region API Calls
[HttpGet]
public IActionResult GetAll()
{
return Json(_unitOfWork.categoryRepository.Get().ToList() );
}
#endregion
}
وقتی در آدرس بار url را تایپ میکنم :
localhost:44360/Admin/Category/GetAll
این اطلاعات از دیتا بیس خونده و نمایش داده میشه :
ضمیمه 151672
وقتی داخل صفحه Index.cshtml طبق زیر تایپ میکنم :
<div> <table id="myTable">
<thead>
<tr>
<th>ProductID</th>
<th>ProductName</th>
</tr>
</thead>
<tbody class="tbody">
</tbody>
</table>
</div>
کدهای جی کوئری:
@section Scripts{
<script>
$(document).ready(function () {
loadData();
function loadData() {
$.ajax({
url: "/Admin/Category/GetAll",
type: "GET",
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function (result) {
var html = '';
$.each(result, function (key, item) {
html += '<tr>';
html += '<td>' + item.CategoryID + '</td>';
html += '<td>' + item.CategoryName + '</td>';
html += '<td><a href="#" onclick="return getbyID(' + item.CategoryID + ')">Edit</a> | <a href="#" onclick="Delele(' + item.CategoryID + ')">Delete</a></td>';
html += '</tr>';
});
$('.tbody').html(html);
},
error: function (errormessage) {
alert(errormessage.responseText);
}
});
}
</script>
}
این نمایش داده میشه: به تعداد سه رکورد موجود در دیتا بیس، سه ردیف نامعین تایپ میشه. ممنون میشم راهنمایی کنید.
ضمیمه 151671
نقل قول: عدم دریافت اطلاعات از اکشن متد و عدم نمایش آنها در myView.cshtml
از console.log استفاده کن تا متوجه بشی دقیقا چی داره برگشت داده میشه
بعد از ایجکس
console.log(result)
بزن که ببینی نتیجه برگشتی به چه شکله
توی حلقه هم
console.log(item)
بزار که ببینی چی داره خروجی میده
1 ضمیمه
نقل قول: عدم دریافت اطلاعات از اکشن متد و عدم نمایش آنها در myView.cshtml
نقل قول:
نوشته شده توسط
plague
از console.log استفاده کن تا متوجه بشی دقیقا چی داره برگشت داده میشه
بعد از ایجکس
console.log(result)
بزن که ببینی نتیجه برگشتی به چه شکله
توی حلقه هم
console.log(item)
بزار که ببینی چی داره خروجی میده
ممنون از پاسخ گویی تون. بیرون از ajax که result را نمیشناسه.
داخل حلقه گذاشتم واسه هر ایتم و بعد از اتمام حلقه هم گذاشتم :
function loadData() { $.ajax({
url: "/Admin/Category/GetAll",
type: "GET",
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function (result) {
var html = '';
$.each(result, function (key, item) {
html += '<tr>';
html += '<td>' + item.CategoryID + '</td>';
html += '<td>' + item.CategoryName + '</td>';
html += '</tr>';
console.log(item);
});
console.log(result);
$('.tbody').html(html);
},
error: function (errormessage) {
alert(errormessage.responseText);
}
});
}
این خروجی م هست دقیقا همه سه تا رکورد از دیتا بیس را میاره به درستی ولی نمیتونم توی table یا div یا هر چی بندازمشون. نمیدونم چرا ؟ از append هم استفاده کردم ولی ربطی نداشت.
ضمیمه 151673
خودم فکر میکنم یک جایی فرمت باید string باشد یا نباشد یا Object باشد یا نباشد.. نمیدونم کجا و چی . یکم با Json.Parse و stringify هم کار کردم ولی جواب نگرفتم.
نقل قول: عدم دریافت اطلاعات از اکشن متد و عدم نمایش آنها در myView.cshtml
Solved
داخل حلقه بجای item.CategoryID گذاشتم item.categoryID - باید camel Casing باشه - عجب !!
نقل قول: عدم دریافت اطلاعات از اکشن متد و عدم نمایش آنها در myView.cshtml
نقل قول:
ممنون از پاسخ گویی تون. بیرون از ajax که result را نمیشناسه.
منظور بعد از دریافت پاسخ ایجکس توی success بود
اینجوری رشته و متن رو متصل کن خیلی ساده تره
html += `
<tr>
<td>${item.CategoryID}</td>
<td>${item.CategoryName}</td>
</tr>
` ;
نقل قول: عدم دریافت اطلاعات از اکشن متد و عدم نمایش آنها در myView.cshtml
کد شما خیلی خوانا تر شد:تشویق: ایول. فقط باز هم باید همون کاراکتر اول را با حروف کوچک مینوشتم. ممنون میشم اگر یک منبع/ کتاب یا وبسایت واسه اموزش ajax/jquery معرفی کنید. چون الان مثلا نمیفهمم چرا و کجا باید حروف ستونهای مدل/جدول را کوچک بنویسم یا سینتکس نگارش را بدرستی بلد نیستم. سایت w3school وارد این جزییات نشده بود.
نقل قول: عدم دریافت اطلاعات از اکشن متد و عدم نمایش آنها در myView.cshtml
اون نام گزاری ها برمیگرده به زبان بک اندت
چون دیتبایس و خوندن از دیتبایس رو با زبان بک اندت انجام میدی (که فکر میکنم C# باشه برای شما )
توی ajax فقط نتیجه رو دریافت میکنی و نمایش میدی پس ربطی به کد jquery نداره این و فقط یک نمایش دهندست و فقط چیزی که بهش میرسه رو نشون میده و در شکل گیری / ذخیره سازی / ساختش تاثیری نداره
هر زبان بک اندی میتونه قواعد و استاندارد های مخصوص به خودش رو داشته باشه در رابطه با نام گزاری منم کارم asp نیست بهتره تو بخش خودش بپرسی
ولی با php که من کار میکنم قاعده اینه که نام فیلد های دیتبایس و متغیر ها رو با حروف کوچیک مینویسیم
و نام های کلاس ها و فایل ها رو با حروف بزرگ شروع میکنیم
در نهایت فرقی نمیکنه اگه نام فیلد های دیتابیس با حروف بزرگ شروع میشن و موقع نمایش و چاپشون هم باید حروف بزرگ بزنی و اگرم کوچیکه حروف کوچک
ولی خب بهتره سینتکس استاندارد رو انجام بدی هم میتونی تعامل بهتری داشته باشی وقتی کد ترو به بقیه نشون میدی و هم سرعت کد نویسی خودت بالاتر میره چون اگه از یک قاعده ثابت استفاده کنی احتمال خطای مثل این پایین میاد و وقتتت گرفته نمیشه برای چک کردن و رفع اشکال