دسته بندی ها
08:35 1398/10/05

عدم ارسال مقدار تگ input به سمت کنترلر با استفاده از کد ajax

مشخصات سوال کننده :
کاربر : Soltani     امتیاز کاربر : 3     رتبه کاربر : 136
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2931
هوش مصنوعی

پاسخ هوش مصنوعی

وقتی شما از AJAX برای ارسال داده ها استفاده می کنید، به طور پیش فرض عملیات ارسال فرم استاندارد (مثل ارسال با submit) متوقف می شود. این به خاطر این است که شما می خواهید بدون بارگذاری مجدد صفحه، داده ها را ارسال کنید. بنابراین، مقادیر ورودی ممکن است به سمت کنترلر ارسال نشوند. برای رفع این مشکل، شما باید از جنبه های زیر مطمین شوید:


$(document).ready(function() {
    $('#yourFormId').on('submit', function(event) {
        event.preventDefault(); // جلوگیری از رفتار پیش فرض ارسال فرم

        // جمع آوری داده ها
        var formData = $(this).serialize();

        // ارسال داده ها با AJAX
        $.ajax({
            url: 'your/controller/url',
            type: 'POST',
            data: formData,
            success: function(response) {
                // پردازش پاسخ 
            },
            error: function(xhr, status, error) {
                // پردازش خطا
            }
        });
    });
});

در کد بالا، با استفاده از event.preventDefault() از ارسال پیش فرض فرم جلوگیری می کنیم و سپس داده ها را با استفاده از serialize() جمع آوری کرده و به کنترلر ارسال می کنیم. با این کار، مقادیر ورودی به درستی به سمت کنترلر منتقل خواهند شد و می توانید بررسی isValid را در مدل داشته باشید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 13:52 1398/10/05

شما مقادیر فرم خودتون رو با استفاده از ایجکس چجوری به سمت کنترلر ارسال کردید ؟ کدهاتون رو بذارید تا خطاش رو بگم بهتون

کدهای سمت کنترلر هم بذارید شاید اشکال در سمت کنترلر شما باشه

ویرایش شده در پنج شنبه 5 دی 1398 ساعت 13:56:23
به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
پاسخ دهنده : saedbfd 21:34 1398/10/05

همونطوری که fateme گفته بهتر بود کدهایی که قرار دادید هم سمت سرور و هم سمت کلاینت رو اینجا قرار می دادید تا بشه راهنمایی بهتری در مورد ارسال مقادیر فرم توسط Ajax انجام داد. اما به طور کلی برای ارسال مقادیر فرم به سمت سرور توسط ایجکس می تونید از کد زیر استفاده کنید :

 

ابتدا برای form خودتون یک Id مشخص کنید. برای form مقادیر asp-controller و asp-action رو مشخص نکنید :

 

<form id="myfrm">

     <input value="2" asp-for="Model.item1" />
     <input value="5" asp-for="Model.item2" />


     <input id="btnsubmit" type="button" value="submit" />
</form>

 

سپس در بخش کدهای جی کوئری توسط FormValue میتونید همه مقادیر موجود در فرم رو به سمت سرور ارسال کنید

 

 <script>
        $('#btnsubmit').on("click", function () {

            var formValue = $("#myfrm").serialize();


            $.ajax({
                type: "post",
                url: '@Url.Action("Action", "Controller")',
                data: formValue });

         });
 </script>

 

با استفاده از FormData یا FormValue ها شما می تونید به راحتی با استفاده از Ajax همه مقادیر موجود در form رو به سمت سرور ارسال کنید. در کنترلر هم فقط کافیه به عنوان پارامتر model رو تعریف کنید و مشاهده خواهید کرد که همه فیلدهای model مقدار دارند.

برای کسب اطلاعات بیشتر می تونید این لینک رو هم مطالعه بفرمایید.

 

به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود