Ajax 如何返回带有错误消息的json

Ajax 如何返回带有错误消息的json,ajax,asp.net-mvc,json,Ajax,Asp.net Mvc,Json,大家好,我正在使用ajax按Id调用详细模型。但如果模型返回数据为空,我想显示一条消息。我该怎么办 我的代码ajax显示模型的详细信息 $('#PGId').blur(function () { var errormsg = ""; var id = $('#PGId').val(); $.ajax({ type: "GET", url: '@Url.Action("GetDetailPG", "Ti

大家好,我正在使用ajax按Id调用详细模型。但如果模型返回数据为空,我想显示一条消息。我该怎么办

我的代码ajax显示模型的详细信息

$('#PGId').blur(function () {
        var errormsg = "";
        var id = $('#PGId').val();
        $.ajax({
            type: "GET",
            url: '@Url.Action("GetDetailPG", "TimeSheetHeader")',
            data: { pgId: id },
            dataType: "json",
            success: function (data) {
               success: function (data) {
                if (data.isValid) {
                    $("#FullName").text(data.FisrtName + " " + data.LastName)
                    $('.Shiff[value="' + data.ShiffId + '"]').prop('checked', true)
                }
                else {
                    alert(data.error);
                }
            },
            },
            error: function () {

            }
        });
    })
我的控制器将绑定数据

[HttpGet]
    public ActionResult GetDetailPG(string pgId)
    {
        PGProfileViewModel pgProfileModel = new PGProfileViewModel();
        pgProfileModel.PGId = pgId;
        var query = _pgProfileService.GetPGProfileById(pgProfileModel.PGId);
        var model = query.ToViewModel();

        if (model == null)
        {
            return Json(new {isValid = false, error = "Error Message"}, JsonRequestBehavior.AllowGet);
        }
        else
        {
            model.LastName = query.LastName.Trim();
            model.FisrtName = query.FisrtName.Trim();
            model.ShiffId = query.ShiffId;
            return Json(new { model = model , isValid = true }, JsonRequestBehavior.AllowGet);
        }
    }

如果返回一个
json
对象(作为业务模型错误),javascript
data
值(具有请求结果)将永远不会为空

您可以尝试以下方法:

C#

JS

//success function of your ajax request.
success: function (data) {
  if (data.isValid) {
    $("#FullName").text(data.FisrtName + " " + data.LastName)
    $('.Shiff[value="' + data.ShiffId + '"]').prop('checked', true)
  }
  else {
    alert(data.error);
  }
}

成功后返回的方式与另外设置了
HTTP404
时返回的方式相同?上一个问题发生了什么?就在我即将发布答案时,您删除了它请注意,您包含的链接没有完全解决您的问题,因为它没有发回任何标识对象的内容!抱歉@StephenMuecke我刚刚删除了我的问题。我将问一个新问题,以帮助您更容易理解我的问题:)请稍候me@StephenMuecke我刚才在这里问了一个新问题,根据最初用户对他自己帖子的评论,他想从控制器发送错误消息。您应该更新代码,以便在json对象中包含可在js else语句中使用的附加错误消息属性。
//success function of your ajax request.
success: function (data) {
  if (data.isValid) {
    $("#FullName").text(data.FisrtName + " " + data.LastName)
    $('.Shiff[value="' + data.ShiffId + '"]').prop('checked', true)
  }
  else {
    alert(data.error);
  }
}