参数未通过ajax调用

时间:2013-08-14 08:44:04

标签: ajax asp.net-mvc-4 controller

我对控制器中的某个函数进行了ajax调用。我需要将参数传递给该函数但它没有发生。我的ajax电话:

 $("#BTN_Plus").click(function () {
     var CurrentPage = @Model.CurrentPage;
    $.ajax({
        type: "POST",
        url: "/Accueil/ListerIncidentsHotline",
        data: JSON.stringify(CurrentPage),
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            $("#Affichage").html(data);
        }
    });
});

我的控制器中的功能:

public PartialViewResult ListerIncidentsHotline( int page = 1)
    {
            int NextPage = 1 + page;
            const int PageSize = 10;
            int NumDossier = StructureData.DonneNumDossier((string)Session["Utilisateur"], (string)Session["MotDePasse"]);
            IEnumerable<IncidentHotline> ListeIncidents = StructureData.DonneIncidentsHotline(NumDossier);
            int NbreIncidents = StructureData.DonneNombreIncidents(NumDossier);
            ViewBag.NombreIncidents = NbreIncidents;
            var viewModel = new IncidentsPageInfo()
            {
                NumPages = (int)Math.Ceiling((double)ListeIncidents.Count() / PageSize),
                CurrentPage = NextPage,
                PageSize = PageSize,
                Incidents = ListeIncidents.Skip((NextPage - 1) * PageSize).Take(PageSize),
            };
            return this.PartialView(viewModel);

    }

当我对变量 CurrentPage 发出警报时,它会向我显示正确的值,但是当涉及到ajax调用时,我会收到一条错误,指出参数为null。无法弄清楚那是什么问题。

3 个答案:

答案 0 :(得分:1)

以及您需要传递具有页面名称的可数值的数据,更改您的ajax数据

$.ajax({ type: "POST", url: "/Accueil/ListerIncidentsHotline", data: JSON.stringify(CurrentPage), contentType: 'application/json; charset=utf-8', success: function (data) { $("#Affichage").html(data); } });

将数据更改为 data: {page: CurrentPage}

答案 1 :(得分:0)

这更容易......

$.get("/Accueil/ListerIncidentsHotline", { CurrentPage: @Model.CurrentPage } ).
  done(function (data) {
    $("#Affichage").html(data);
   });

答案 2 :(得分:0)

显然问题来自我的ajax调用。所以我必须在方法JSON.Stringify中将参数的名称与其值连接起来,如下所示:

$("#BTN_Plus").click(function () {
    var CurrentPage = @Model.CurrentPage;
    alert(CurrentPage);
    $.ajax({
        type: "POST",
        url: "/Accueil/ListerIncidentsHotline",
        data: JSON.stringify({ page: CurrentPage }),
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            $("#Affichage").html(data);
        }
    });
});