Замена div с частичным представлением с помощью Ajax Call не работает - PullRequest
0 голосов
/ 28 сентября 2018

Итак, у меня есть 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>

Для пояснения, действие вызывается при загрузке страницы и отображает частичное представление с таблицей данных.Моя система оценки работает (база данных обновлена), и я просто хочу обновить это же частичное представление без необходимости обновления всей страницы.

Если я возвращаю результат JSON и просто отображаю предупреждение, это работает, ноне когда я хочу заменить div с частичным представлением.

Чего мне не хватает?

1 Ответ

0 голосов
/ 28 сентября 2018

Поскольку вы указываете, что ваш вызов ajax ожидает, что json вернет результат с сервера, в то время как вы возвращаете PartialView из метода действия, который будет возвращен в виде html-строки с сервера.

Поэтому измените следующую строку:

dataType: "json"

либо удалите указанную выше строку, либо измените ее, указав, что она возвращает html обратно с сервера.

Следующие настройки сообщат, что она ожидает возврата html:

dataType : "html"

Прочтите здесь об атрибуте dataType в вызове ajax

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...