Действие контроллера, получающее старые значения в качестве параметров вызова AJAX - PullRequest
0 голосов
/ 12 июня 2018

Я отправляю запрос Ajax в свой MVC Action в ASP.NET, используя простой jquery, он работает нормально в первый раз, но после первого вызова все вызовы, как правило, получают первые опубликованные значения в Action.

когда я пытаюсь отладить мой код JS, в нем появляются новые значения, но в Action они возвращаются к первым.

мой код Jquery:

  $('.send-quote').click(function (e) {
  var $form = $('#manualBooking');

            var formData = $('#manualBooking').serializeArray();

            var name = formData[0].value;
            var contact = formData[1].value;
            var email = formData[2].value;
            var bookingDate = formData[3].value;
            var pickupLocation = formData[4].value;
            var dropOffLocation = formData[5].value;
            var flight = formData[6].value;
            var passenger = formData[7].value;
            var luggage = formData[8].value;
            var message = formData[9].value;
            var language = formData[10].value;
            var hours = formData[11].value;
            var days = formData[12].value;
            var radio = formData[13].value;


            if (radio == 'yes') {

                $form.validate({
                    errorClass: 'customErrorClass',
                    rules: {
                        name: {
                            required: true
                        },
                        phone: {
                            required: true
                        },
                        email: {
                            required: true,
                            email: true
                        },
                        depdate: {
                            required: true
                        },
                        txtAddresspickupFromAirport: {
                            required: true
                        },
                        txtAddressdropOffFromAirport: {
                            required: true
                        },
                        flight: {
                            required: true
                        },
                        passenger: {
                            required: true
                        },
                        luggage: {
                            required: true
                        },
                        message: {
                            required: true
                        },
                        lang: {
                            required: true
                        },
                        hours: {
                            required: true
                        },
                        days: {
                            required: true
                        }
                    },
                    messages: {
                        email: "*Please specify a valid email address"
                    },
                    submitHandler: function (form) {
                        console.log(' NOT OK')
                        $.ajax({
                            type: "POST",
                            url: '/Home/InsertManualBookingForm',
                            data: {
                                Name: name,
                                ContactNo: contact,
                                Email: email,
                                BookingDateTime: bookingDate,
                                PickUpLocation: pickupLocation,
                                DropOffLocation: dropOffLocation,
                                FlightNumber: flight,
                                Passenger: passenger,
                                Luggage: luggage,
                                Message: message,
                                Language: lang,
                                HoursNeeded: hours,
                                DaysNeeded: days
                            },
                            success: function (data) {
                                swal("an email will be sent to you shortly", {
                                    icon: "success",
                                });

                                //   document.getElementById("manualBooking").reset();


                            }
                        });

                    }
                });
            }

и мой MVCкод действия:

[OutputCache(Duration = 0, VaryByParam = "none")]
    public JsonResult InsertManualBookingForm(ManualBookingForm manualBookingForm)
    {

        this.ModelState.Clear();
        ModelState.Clear(); // force to use new model values

        String Result = String.Empty;
        this.ModelState.Clear();
        ModelState.Clear(); // force to use new model values


        try
        {
            string agentCardsSerialize = JsonConvert.SerializeObject(manualBookingForm);

        this.ModelState.Clear();
            ModelState.Clear(); // force to use new model values



            Result = Common.Common.ApiCall(Common.Common.APIEndpoint + "Home/InsertManualBookingForm", agentCardsSerialize);//Common.Common.ApiCall(URL_Request, commisionType,token);
            return Json(Result, JsonRequestBehavior.AllowGet);

        }
        catch (Exception ex)
        {

            throw;
        }
    }

, как вы можете видеть, я даже пробовал онлайн-решения по очистке кэша и очистке состояния модели, но, похоже, ни одно из решений не работает.

есть ли проблема с моимВызов AJAX или действие MVC?пожалуйста, сообщите.

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

Попробуйте добавить кеш: false в вашем вызове ajax

  $.ajax({
                            type: "POST",
                            url: '/Home/InsertManualBookingForm',
                            cache:false,
                            data: {
                                Name: name,
                                ContactNo: contact,
                                Email: email,
                                BookingDateTime: bookingDate,
                                PickUpLocation: pickupLocation,
                                DropOffLocation: dropOffLocation,
                                FlightNumber: flight,
                                Passenger: passenger,
                                Luggage: luggage,
                                Message: message,
                                Language: lang,
                                HoursNeeded: hours,
                                DaysNeeded: days
                            },
                            success: function (data) {
                                swal("an email will be sent to you shortly", {
                                    icon: "success",
                                });

                                //   document.getElementById("manualBooking").reset();


                            }
                        });

Дайте нам знать, работает ли он

PS : Получить значения формы (Имя,ContactNo, Email ... и т. Д.) В обработчике отправки прямо перед вызовом ajax, возможно, поэтому он всегда принимает значения из первого вызова.

0 голосов
/ 12 июня 2018

в вашем контроллере, после операции попробуйте это:

 ModelState.Remove("ManualBookingForm ");
0 голосов
/ 12 июня 2018

Я не знаю, является ли проблема отсутствующим атрибутом [FromBody], но вы можете попробовать и посмотреть.

public JsonResult InsertManualBookingForm([FromBody]ManualBookingForm manualBookingForm)
{
   //Your code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...