avatar
رضا

کاربر

  • 1402/03/05
  • 0
  • 78
1402/03/05 |
backend

مشکل در Ajax

سلام وقت بخیر 

با انتخاب یک Company از لیست و با فرستادن Id آن به اکشن لیست، پروژه های آن شرکت را دریافت میکنم و در قالب ResultDto که در زیر کدها را گذاشتم به Ajax بر میگردانم. تا اینجا همه چیز به ظاهر خوب هست و حتی Issuccess و message در Ajax قابل دستیابی هست فقط لیستی که در data هست را نمیشناسه که بریزه داخل لیست پروژه. سه خط آخر Ajax مشکل دارم.

با تشکر. 

کد Ajax را قرار دادم

        function GetProjectList(Id) {
            var postData = {
                'Id': Id,
            };
            $.ajax({
                contentType: 'application/x-www-form-urlencoded',
                dataType: 'json',
                type: "POST",
                url: "GetProjectList",
                data: postData,
                success: function (result) {
                    if (result.issuccess == true) {
                        $('#CreateEquipmentEntryExit_Project').empty();
                        $.each(result.data, function (i) {
                            $('#CreateEquipmentEntryExit_Project').append($("<option></option>")
                                .val(result.data[i].Id).html(result.data[i].Title));
                        });
                    }
                }
            });

        }

کد اکشن:

        [HttpPost]
        public IActionResult GetProjectList(long Id)
        {
            return Json(_getProjectService.GetProject(Id));
        }

این قالب ارسال اطلاعات:

    public class ResultDto<T>
    {
        public bool issuccess { get; set; }
        public string message { get; set; }
        public T data { get; set; }
    }

 


سلام

در این صورت احتمالا مشکل از جاهای زیر میتونه باشه:

  1. ساختار داده‌ای که از سمت سرور برگشت داده می‌شود: از طریق console log در جاوااسکریپت یا ابزارهای توسعه دهنده مرورگر خود (Developer Tools)، پاسخ برگشتی سرور را بررسی کنید تا اطمینان حاصل کنید که داده‌ی برگشتی با ساختاری که در کد جاوااسکریپت خود در نظر گرفته‌اید، منطبق است.

  2. اینکه اطلاعات به درستی برای ResultDto<T> سریالایز می‌شوند یا خیر. توجه کنید که برای کار با JSON، اسم‌های متغیر‌ها باید با حروف کوچک شروع شوند، پس ممکن است باید issuccess را به IsSuccess، و message را به Message تغییر دهید. همچنین، اطمینان حاصل کنید که T در ResultDto<T> با نوع داده‌ای که می‌خواهید برگردانید مطابقت دارد.

  3. ممکن است اطلاعاتی که در data قرار دارد یک لیست باشد، ولی در اکشن GetProjectList فقط یک مورد برمی‌گردد. اگر GetProject بیش از یک پروژه برمی‌گرداند، آن را به صورت یک لیست برگردانید.


  • 1402/03/08

سلام. با تشکر از وقتی که گذاشتید.

با راهنمایی شما به جواب رسیدم و جواب را نیز در اینجا قرار می دهم.

        function GetProjectList(Id) {
            $("#CreateEquipmentEntryExit_Project").empty();
            var postData = {
                'Id': Id,
            };
            $.ajax({
                contentType: 'application/x-www-form-urlencoded',
                dataType: 'json',
                type: "GET",
                url: "GetProjectList",
                data: postData,
                success: function (result) {
                    if (result.issuccess == true) {
                        
                        jQuery.each(result.data, function (i) {
                            var option = $('<option></option>').attr("value", result.data[i].id).text(result.data[i].title);
                            $("#CreateEquipmentEntryExit_Project").append(option);
                        });
                    }
                }
            });
        }

        [HttpGet]
        public IActionResult GetProjectList(long Id)
        {
            return Json(_getProjectService.GetProject(Id));
        }

 



پاسخی برای این باگ ارسال کنید

لطفا کدها را درون قطعه کد ارسال نمایید

برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری