jquery - 在 JSON 响应中返回 'PartialView' 的问题

标签 jquery json ajax partial-views

我有一个在 Ajax 调用后正在重新加载的部分。以下代码有效:

public PartialViewResult AddPreferredPosition(string playerID, int positionID)
    {
            playerService.AddPlayerPreferredPosition(Guid.Parse(playerID), positionID);

            PreferredPositionsModel model = new PreferredPositionsModel();
            model.PreferredPositions = playerService.GetPlayerPreferredPositions(Guid.Parse(playerID));
            model.Positions = playerService.GetPositions();
        return PartialView("~/Areas/Admin/Views/Player/Partials/PreferredPositions.cshtml", model);
    }

连同:

var params = {};
    params.playerID = $('#PlayerID').val();
    params.positionID = $("select[name='ddlPositionID'] option:selected").val();
    $.ajax({
        type: 'POST',
        url: '/Admin/Player/AddPreferredPosition',
        data: params,
        success: function (data) {
                $('#PreferredPositions').html(data);
        }
    });

我想稍微改变它以进一步管理我的错误处理,如下所示:

public ActionResult AddPreferredPosition(string playerID, int positionID)
    {
        try
        {
            playerService.AddPlayerPreferredPosition(Guid.Parse(playerID), positionID);

            PreferredPositionsModel model = new PreferredPositionsModel();
            model.PreferredPositions = playerService.GetPlayerPreferredPositions(Guid.Parse(playerID));
            model.Positions = playerService.GetPositions();

            return Json(new
            {
                Success = true,
                HTML = PartialView("~/Areas/Admin/Views/Player/Partials/PreferredPositions.cshtml", model)
            }, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            return Json(new
            {
                Success = false,
                ErrorMessage = ex.Message,
                InnerException = (ex.InnerException != null ? ex.InnerException.Message : ""),
                ex.StackTrace
            });
        }
    }

与:

$.ajax({
        type: 'POST',
        url: '/Admin/Player/AddPreferredPosition',
        data: params,
        success: function (data) {
            if (data.Success) {
                $('#PreferredPositions').html(data.HTML);
            } else {
                alert(data.ErrorMessage);
                console.log(data.StackTrace);
            }
        }
    });

但是,当我这样做时,data.HTML 不是已编译的部分 View 的 HTML,就像在工作示例中一样。

我做错了什么?

最佳答案

更正本节中的代码。

$.ajax({
    type: 'POST',
    url: '/Admin/Player/AddPreferredPosition',
    data: params,
    success: function (data) {
        if (data.Success) {
            $('#PreferredPositions').html(data.HTML);
        } else {
            alert(data.ErrorMessage);
            console.log(data.StackTrace);
        }
    }
});

当您返回 JSON 时,您必须从 Json 解析该数据。 否则您将无法直接访问该数据

data.HTML

希望这有帮助。

关于jquery - 在 JSON 响应中返回 'PartialView' 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48186568/

相关文章:

javascript - 带有时区偏移的 JSON 日期未正确转换为 JavaScript 日期

javascript - 防止使用“无显示”按钮提交 Jquery 表单上的页面加载

javascript - 如何向 DOM 添加视频/音频对象?

javascript - jquery扩展: what's happening here?

mysql - Perl/DBI 查询不保留 JSON 输出的整数值

java - JSON 简单覆盖

javascript - AJAX、Rails 和表单的动态加载

javascript - jQuery 验证 : form always valid issue

javascript - 可调整大小的图像上的文本 div

javascript - jQuery - 移动到特定元素位置