Как передать данные из Ajax в метод контроллера? - PullRequest
0 голосов
/ 18 июня 2020

У меня есть следующий код javascript:

 <script>
  function RequestData() {
    var Nos = $("#search").val();
    var DataIntervals = $("#txtDataInterval").val();
    var StartDates = $("#start_date").val();
    var EndDates = $("#end_date").val();
    if (Nos != null && DataIntervals != null && StartDates != null && EndDates != null) {
        $.ajax({
            type: "POST",
            async: false,
            url: 'ExtractData/ExtractData',
            data: {
                'No': Nos,
                'DataInterval': DataIntervals,
                'StartDate': StartDates,
                'EndStart': EndDates
            },
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                alert("The Query Has Completed Successfully.");
            },
            error: function(e) {
                alert("Something Went Wrong Please Try Again." + e);
            }
        });
    } else {
        alert("Please Select All The Required Fields and Try Again.");
    }
  }
</script>

Я пытаюсь передать параметры методу C#, но они всегда равны нулю. Вот мой метод C#:

[HttpPost]
public IActionResult ExtractData(string No, string DataInterval, string StartDate, string EndStart)
{
  string x = No;
  return View();
}

Что я делаю неправильно, из-за чего параметры этого метода всегда равны нулю?

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Вы пробовали сериализовать свои данные?

var data = {
    No: Nos,
    DataInterval: DataIntervals,
    StartDate: StartDates,
    EndStart: EndDates
};

$.ajax({
    type: "POST",
    async: false,
    url: 'ExtractData/ExtractData',
    data: JSON.stringify(data),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        alert("The Query Has Completed Successfully.");
    },
    error: function(e) {
        alert("Something Went Wrong Please Try Again." + e);
    }
});
0 голосов
/ 18 июня 2020

Итак, что я использую для вызова Ajax сервера, так это то, что я создал два метода под названием «PostMyData» и «GetMyData», как вы можете видеть ниже. Они получают три параметра:

данные: которые должны быть отправлены на сервер. URL-адрес: это URL-адрес API, который вы хотите вызвать. SuccessFunction: это функция обратного вызова, которая получает ответ

Примечание: вы можете редактировать эту функцию по своему усмотрению.

// Post Data
    function PostMyData(data, url, SuccessFunction) {
      $.ajax({
        type: "POST",
        //async: false,
        url: url,
        data: data,
        dataType: 'json',
        success: SuccessFunction,
        failure: function (response) {
          //location.href = 'Shared/Error';
          console.log(response.responseText);
        },
        error: function (response) {
          //location.href = 'Shared/Error';
          console.log(response.responseText);
        }
      });
    }

    // Get Data
    function GetMyData(url, SuccessFunction) {
      $.ajax({
        type: "GET",
        url: url,
        dataType: 'json',
        success: SuccessFunction,
        failure: function (response) {
          //location.href = 'Shared/Error';
          console.log(response.responseText);
        },
        error: function (response) {
          //location.href = 'Shared/Error';
          console.log(response.responseText);
        }
      });
    }

Пример использования (ваш код):

 const obj = { 'No': Nos, 'DataInterval': DataIntervals, 'StartDate': StartDates, 'EndStart': EndDates}

 PostMyData(obj, '/ExtractData/ExtractData', (res) => {
      alert('working')
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...