Я просто пытаюсь отправить обратно коллекцию List из контроллера в функцию ajax в виде строки JSON, и для ее получения, чтобы я мог манипулировать представлением.

Я делал это раньше с коллекциями, но я не вижу, в чем проблема, я получаю требуемый JSON по ссылке на изображение внизу. Однако я не вижу никакой ошибки, кроме «json response — undefined» в другой ссылке для консоли браузера при отладке.

Я уже пытался: 1. создать новый объект данных SalaryCalculator (который отправляет обратно в порядке) 2. также создал анонимный тип (который снова отправляет обратно в порядке)

Контроллер метод

[HttpPost] public ActionResult GetSalaryCalculation(List{amp}lt;SalaryCalculator{amp}gt; form) { foreach (var entry in form) { entry.Tax = TaxCalculation(entry.Salary); entry.MonthlyNet = MonthlyCalculation(entry.Salary, entry.Tax); entry.WeeklyNet = WeeklyCalculation(entry.MonthlyNet); entry.HourlyRate = HourlyCalculation(entry.WeeklyNet, entry.WeeklyHours); if (entry.OverTimeHours {amp}gt; 0) { entry.OvertimeTotal = OvertimeCalculation(entry.OverTimeHours, entry.HourlyRate); } entry.OvertimeSalaryTotal = TotalCombinedCalculation(entry.MonthlyNet, entry.OvertimeTotal); entry.TaxCode = "tax"; if (entry.Pension {amp}gt; 0) { entry.Pension = PensionCalculation(entry.OvertimeSalaryTotal, entry.Pension); } if (entry.StudentLoan {amp}gt; 0) { entry.StudentLoan = StudentLoanCalculation(entry.OvertimeSalaryTotal, entry.StudentLoan); } } return Json(form, JsonRequestBehavior.AllowGet); //return Content(JsonConvert.SerializeObject(form)); } 

Вызов AJAX

 initialise: function () { $("#calculateAmount").on("click", function () { var formData = [ { Salary: $("#salaryAmount").val(), WeeklyHours: $("#hoursWorked").val(), StudentLoan: $("#studentValidation").val(), Pension: $("#pensionValidation").val(), OverTimeHours: $("#overtimeValidation").val() } ]; //console.log(formDataArray); Ajax.fn.ajaxPost("GetSalaryCalculation", function (jsonSuccess) { console.log(jsonSuccess); }, function (xhr, status, error) { console.log(xhr); console.log(status); console.log(error); }, { form: formData } ); }); } 

Обработка AJAX

  $.ajax({ type: "POST", url: "/Home/"   sFunction, contentType: "application/json; charset=utf-8", dataType: "json", cache: false, data: data === null ? null : JSON.stringify(data), success: function (response, status, jqXhr) { if (typeof response.d !== "undefined") { onSuccess(response.d, status, jqXhr, passThroughData); } else { onSuccess(response, status, jqXhr, passThroughData); } }, error: function (jqXhr, status, errorName) { // Handle generic errors if they exist, otherwise forward to error handler if (jqXhr.status === 401) { // Unauthorised. Force a refresh window.location.href = window.location.href; return; } else if (status === "timeout") { // Function call timeout } onError(jqXhr, status, errorName, passThroughData); }, timeout: iTimeoutMillis, }); 

Индекс

 {amp}lt;form id="calculateForm"{amp}gt; {amp}lt;div class="form-group row"{amp}gt; {amp}lt;div class="col-sm-10"{amp}gt; {amp}lt;input type="text" class="form-control" id="salaryAmount" placeholder="Salary amount £" aria-label="Salary Amount" aria-describedby="salary Amount" required{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;div class="form-group row"{amp}gt; {amp}lt;div class="col-sm-10"{amp}gt; {amp}lt;input type="text" class="form-control" id="hoursWorked" placeholder="Weekly hours worked" aria-label="Hours Worked" aria-describedby="Hours Worked" required{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;div class="form-group row collapse" id="studentLoan"{amp}gt; {amp}lt;div class="col-sm-10"{amp}gt; {amp}lt;input type="text" class="form-control" placeholder="Student loan £" aria-label="Student Loan" id="studentValidation" aria-describedby="Student Loan"{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;div class="form-group row collapse" id="pensionPayment"{amp}gt; {amp}lt;div class="col-sm-10"{amp}gt; {amp}lt;input type="text" class="form-control" placeholder="Pension Payment £" aria-label="Pension Payment" id="pensionValidation" aria-describedby="Pension Payment"{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;div class="form-group row collapse" id="overtimeAdjustment"{amp}gt; {amp}lt;div class="col-sm-10"{amp}gt; {amp}lt;input type="text" class="form-control" placeholder="Overtime hours" aria-label="Overtime Amount" id="overtimeValidation" aria-describedby="Overtime Amount"{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;div class="form-group row"{amp}gt; {amp}lt;div class="col-sm-10"{amp}gt; {amp}lt;div class="form-check"{amp}gt; {amp}lt;input class="form-check-input" type="checkbox" data-toggle="collapse" href="#studentLoan" id="studentCheck"{amp}gt; {amp}lt;label class="form-check-label" for="studentLoan"{amp}gt; Student loan repayment {amp}lt;/label{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;div class="form-group row"{amp}gt; {amp}lt;div class="col-sm-10"{amp}gt; {amp}lt;div class="form-check"{amp}gt; {amp}lt;input class="form-check-input" type="checkbox" data-toggle="collapse" href="#pensionPayment" id="pensionCheck"{amp}gt; {amp}lt;label class="form-check-label" for="pensionPayment"{amp}gt; Pension payment {amp}lt;/label{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;div class="form-group row"{amp}gt; {amp}lt;div class="col-sm-10"{amp}gt; {amp}lt;div class="form-check"{amp}gt; {amp}lt;input class="form-check-input" type="checkbox" data-toggle="collapse" href="#overtimeAdjustment" id="overtimeCheck"{amp}gt; {amp}lt;label class="form-check-label" for="overtimeAdjustment"{amp}gt; Overtime hours {amp}lt;/label{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;div class="form-group row"{amp}gt; {amp}lt;div class="col-sm-10"{amp}gt; {amp}lt;button type="submit" class="btn btn-outline-primary" id="calculateAmount"{amp}gt;Calculate{amp}lt;/button{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/form{amp}gt; 

Дисплей консоли браузера:

дисплей консоли браузера

Действие контроллера с отображением json:

Диспетчер действий, отображающий JSON

отладка контроллера с помощью данных формы, полученных из ajax

Я выяснил проблему, похоже, это было связано с тем, как JavaScript обрабатывает десятичные значения (т.е. не изначально), в сочетании со способом ввода данных из форм ввода.

Явное преобразование пользовательского ввода в Javascript с использованием

parseFloat (). toFixed ()

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