Методы HTTP GET (работает) против POST (не работает) - PullRequest
0 голосов
/ 06 февраля 2020

Des c

Используя триггер, я вызываю функцию, которая извлекает частичное представление и выбрасывает его на место в коде (работает)

Я вызываю эту функцию для отображения таблицы

function getTable() {

    var test= t6est;
    var test2test= edhwbtest;;

    if (test!= null && test2test!= null) {


        var testFtT= daysInMonth(test, test2test);

        $.ajax({

            url: "@Url.Action("PartialTabelaEcp", "Home")",
            type: "GET",
            contentType: 'application/json; charset=utf-8',
            dataType: "html",
            data: { testFtT: testFtT, test: test, test2test: test2test},
            cache: false,
            success: function (data) {
                $("#kartaEcp").html(data);
            },
            failure: function (error) {
                alert(error);

            },
            error: function (error) {
                alert(error);
            }
        });

    }

}

и этого контроллера:

[HttpGet]
        public ActionResult PartialTabelaEcp(int testFtT, int test, int test2test)
        { 
             return PartialView("_TabelaEwidencja");
        }
  • Мне нужно перейти с httpget на httpppost, потому что мне нужно отправить данные в базу данных

, но при изменении

$.ajax({


            type: "GET",


and 


[HttpGet]
        public ActionResult

на

$.ajax({


            type: "POST",

and

[HttpPost]
        public ActionResult

Ошибка

Ошибка загрузить ресурс: сервер ответил со статусом 500 (Внутренняя ошибка сервера)

1 Ответ

1 голос
/ 06 февраля 2020

Ваш AJAX вызов будет выглядеть так:

  var json = {
          testFtT: testFtT ,
          test: test,
          test2test: test2test
         };

  $.ajax({
      type: "post",
      dataType: "json",
      data: {"json": JSON.stringify(json)},,
      url: "@Url.Action("PartialTabelaEcp", "Home")",
      cache: false,
      success: function (data) {
            $("#kartaEcp").html(data);
        },
      failure: function (error) {
            alert(error);

        },
      error: function (error) {
            alert(error);
        }
    });

И ваш Controller метод будет:

using System.Web.Script.Serialization;

[HttpPost]
public ActionResult PartialTabelaEcp(string json)
{

  var serializer = new JavaScriptSerializer();
  dynamic jsondata = serializer.Deserialize(json, typeof(object));

  //Get your variables here from AJAX call
  var testFtT= jsondata["testFtT"];
  var test= jsondata["test"];
  var test2test= jsondata["test2test"];

  return PartialView("_TabelaEwidencja");
}
...