دریافت مقدار 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 به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2