使用Ajax Call用Partial View替换div不起作用

时间:2018-09-28 13:21:03

标签: jquery ajax asp.net-mvc partial-views

所以我有一个5星评级系统,每个星都调用此功能:

function Test(ideaId, rating){
    //alert(ideaId + " : " + rating);
    $.ajax({
        url: '@Url.Action("RateIdea", "Ideas")',
        dataType: "json",
        type: "Get",
        data: { "ideaId": ideaId, "ratingValue": rating, "challengeId": @Model.pkiChallengeId }
    }).done(function (response) {
        //alert('test');
        $("#divDetailsPartial").html(response);
    });
}

ActionResult被称为:

public ActionResult RateIdea(int ideaId, int ratingValue, int challengeId)
{
    string loggedInUserId = User.Identity.GetUserId();

    int id = clsIdeas.SaveRating(ideaId, ratingValue, loggedInUserId);

    ChallengeIdeasViewModel CIVM = new ChallengeIdeasViewModel();
    IEnumerable<Ideas> ideasList;

    CIVM.ideasList = clsIdeas.GetChallengeIdeas(challengeId, loggedInUserId);
    CIVM.ChallengeStatus = clsIdeas.GetChallengeStatus(challengeId);

    return PartialView("Details", CIVM);

    //return Json(new { status = "success" }, JsonRequestBehavior.AllowGet);
}

在我的View中:

<div class="widget-body no-padding">
    <div id="divDetailsPartial">
          @Html.Action("Details", "Ideas", new { id = Model.pkiChallengeId })
   </div>

</div>

为说明起见,当页面加载并显示带有数据表的局部视图时,将调用Action。我的评分系统有效(数据库已更新),我只想刷新此相同的局部视图,而不必刷新整个页面。

如果我返回JSON结果并仅显示警报,则它可以工作,但是当我想用部分视图替换div时却不能。

我想念什么?

1 个答案:

答案 0 :(得分:2)

因为您要指定ajax调用在从操作方法返回PartialView时期望从服务器返回json结果,而该方法将从服务器以html字符串形式返回。

因此更改以下行:

dataType: "json"

删除上面的行或对其进行调整,以告诉它从服务器中退回html。

以下设置将告诉它期望返回html结果:

dataType : "html"

在此处阅读有关dataType attribue in ajax call

的信息