دریافت مقدار undefined بعد از ارسال درخواست به سرور توسط Jquery ajax
سلام من مشکلی که دارم این هست که یک مدل رو به کنترلرم با ایجکس ارسال میکنم و تو کنترلر دریافت میکنم بعد از طریق دیتابیس فیلدهایی رو select میکنم و برمیگردونم به ویو از طریق همون ایجکس
الان مشکلم اینه که وقتی مقدار رو میخونم طرف ویو undefine میده بهم
این کد طرف ویو
function Add(selectionFilter) {
var html = "";
var resultGet = null;
$.ajax({
url: "/SellRep/AddData/",
type: "POST",
//data: JSON.stringify(selectionFilter),
data: JSON.stringify(selectionFilter),
contentType: "application/json; charset=utf-8",
dataType: "json",
success:
function (resultGet) {
if (resultGet.length !== 0) {
alert(resultGet.length);
$.each(resultGet,
function (key, item1) {
alert(item1.FromSource);
// alert(result.CustomerName);
html += "<tr>"
+"<td> " + item1.CustomerName + "</td >"
+"</tr>";
// alert(html);
});
$("#booksTable > tbody").html(html);
کدهای سمت کنترلر
اینم بگم وقتی len رو میگیرم طول لیستم که سه تا هست رو برمیگردونه
اینم کد طرف کنترلرم
public IActionResult AddData([FromBody]SelectionFilter selectionFilter)
{
List<SellRepModel> SellRepModels;
if (selectionFilter != null)
{
SellRepModels = _context.SellRepModels.FromSql("EXEC HS_BasGetInvoiceRep ").ToList();
return new JsonResult(SellRepModels);
}
return new JsonResult(null);
}
پاسخ هوش مصنوعی
مشکل شما ممکن است به دلیل فرمت نادرست داده ها یا عدم تطابق با داده های دریافتی از سرور باشد. در اینجا چند نکته و تغییرات پیشنهادی برای بررسی و اصلاح کد خود ارایه می شود.
اول از همه، مطمین شوید که در یک نمایش JSON درست از سمت کنترلر به کلاینت ارسال می کنید. به عنوان مثال، مطمین شوید که در مدل SellRepModel فیلد CustomerName وجود دارد و مقدار آن هنگام دریافت از پایگاه داده به درستی پر شده است.
در کد سمت ویو، اگر به item1.FromSource مقدار undefined می دهد، ممکن است که این فیلد در داده های دریافتی وجود نداشته باشد. پیشنهاد می کنم در کنسول مرورگر، محتوای resultGet را بررسی کنید.
می توانید کدهای زیر را برای بررسی پیشنهاد کنید:
function Add(selectionFilter) {
var html = "";
$.ajax({
url: "/SellRep/AddData/",
type: "POST",
data: JSON.stringify(selectionFilter),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (resultGet) {
console.log(resultGet); // بررسی محتوای resultGet
if (resultGet && resultGet.length !== 0) {
alert(resultGet.length);
$.each(resultGet, function (key, item1) {
console.log(item1); // بررسی محتوای item1
alert(item1.FromSource);
// اطمینان حاصل کنید که CustomerName در item1 وجود دارد
html += "<tr>" +
"<td> " + (item1.CustomerName || 'ناموجود') + "</td>" +
"</tr>";
});
$("#booksTable > tbody").html(html);
} else {
alert("هیچ داده ای یافت نشد.");
}
}
});
}
سپس اطمینان حاصل کنید که کد کنترلر شما به درستی کار می کند و لیست SellRepModels به درستی تولید شده است:
public IActionResult AddData([FromBody]SelectionFilter selectionFilter)
{
List SellRepModels = new List(); // اطمینان از تعریف مدل
if (selectionFilter != null)
{
SellRepModels = _context.SellRepModels.FromSql("EXEC HS_BasGetInvoiceRep").ToList();
return new JsonResult(SellRepModels);
}
return new JsonResult(new List()); // برگرداندن لیست خالی در صورت عدم وجود فیلتر
}
با این تغییرات، می توانید اشکالات را به راحتی شناسایی کرده و حل کنید. بررسی داده های دریافتی با console.log به شما کمک می کند تا مطمین شوید که داده ها به درستی در حال ارسال و دریافت هستند.
دوست عزیز در core وقتی یک مدل رو در پاسخ به یک درخواست ajax بر میگردونید نام فیلد های دریافت شده با نامی که شما در مدل روی اونها گذاشتید ممکنه متفاوت باشه.
به فرض مثال شما یک پراپرتی در مدلتون دارید به نام PostalCode
ولی در ویو در متد success ایجکس با نام postalCode دریافتش میکنید و p اول کلمه کوچیک میشه .
به همین دلیل هم هست که مقدار undefined دریافت میکنید
با سلام و درود
شما کدهای خودتون رو کامل قرار ندادید. اما اولین مشکلی که در همین کدها میشه مشاهده کرد این هست که وقتی میخواید مقداری رو از سمت سرور دریافت کنید که توسط یک درخواست ایجکس ارسال شده نام پارامترهای دریافتی باید همه حروف کوچک باشه.
$.each(resultGet,
function (key, item1) {
alert(item1.FromSource);
// alert(result.CustomerName);
html += "<tr>"
//در این قسمت
+"<td> " + item1.customername + "</td >"
+"</tr>";
// alert(html);
});
همچنین در سمت کنترلر هم باید نام متغیرهای با حروف کوچک ارسال بشه
_context.Customer_Table.Select(C => new {customername = C.CustomerName, customerid = C.CustomerID});
البته قطعه کد بالا یک نمونه تستی می باشد.
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- تفاوت های تلگرام و واتس اپ چیست ؟
- چرا استوری های واتس اپ برای دوستان نمایش داده نمیشن ؟
- چند تا استوری رایگان می تونیم تلگرام بذاریم ؟
- خطای Severity Code Description Project هنگام استارت پروژه
- کار نکردن navBar و sideBar در پروژه Asp.net core
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2