مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

iran

عضویت از 1394/01/31

مشکل ajax با ValidateAntiForgeryToken؟

  • سه شنبه 13 شهریور 1397
  • 08:37
تشکر میکنم

سلام
من می خواهم عملیات ثبت را از طریق ajax انجام بدهم اما برای کنترلر وقتی ValidateAntiForgeryToken قرار میدهم ajax  مربوطه اصلا کار نمیکند و  وارد کنترلر نمیشود اما وقتی  ValidateAntiForgeryToken  استفاده نمیکنم ajax   درست کار میکند برای حل مشکل باید چکارکنم

 $.ajax({
                            url: '@Url.Action("Create", "Home")',
                            type: "Post",
                            data: { id: selectId }
                        }).done(function (result) {
                            $("#bodyModal").html(result);
                        });


باتشکر

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • سه شنبه 13 شهریور 1397
  • 09:44

کاملا منطقی است چون شما توکنی که توسط Html.AntiForgeryToken تولید می شود را به کنترلر نمی فرستید. زمان که صفت  ValidationAntiForgeryToken را بر روی اکشن خود قرار می دید آن اکشن باید یک توکن توسط شما دریافت کند و سپس به کار خود ادامه بدهد. برای حل این مشکل باید ابتدا توسط Html.AntiForgeryToken توکن مورد نظر را تولید کنید که آن توکن درون یک input از نوع hidden قرار می گیرد. حال هنگام ارسال درخواست ajax آن را دورن data خود قرار بدید.

var token = $("input[name='__RequestVerificationToken']").val();

$.ajax({
    url: '@Url.Action("Create", "Home")',
    type: "Post",
    data: { 
        id: selectId,
        __RequestVerificationToken: token
    }
}).done(function (result) {
    $("#bodyModal").html(result);
});                         

اطلاعات بیشتر

اطلاعات بیشتر در ajax

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)