ajax - 如何返回带有错误消息的 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", "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 () {

            }
        });
    })

我的 Controller 绑定(bind)数据

[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 值(包含请求结果)将永远不会为 null。

您可以尝试这样的方法:

C#

[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({
      isValid: false,
      error: "Your error message"
    }, JsonRequestBehavior.AllowGet);
  }
  else
  {
    model.LastName = query.LastName.Trim();
    model.FisrtName = query.FisrtName.Trim();
    model.ShiffId = query.ShiffId;

    return Json({
      model: model,
      isValid: true
      }, JsonRequestBehavior.AllowGet);
   }
}

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);
  }
}

关于ajax - 如何返回带有错误消息的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27936002/

相关文章:

javascript - JSON 无法接受 json_encode() 数组

javascript - 当使用 History.js 从应用程序中的其他位置刷新页面时,如何避免渲染浏览 session 的初始 View ?

asp.net-mvc - 使用 Azure 存储 blob 时 DownloadTo(stream) 与 DownloadTo(string) 之间的区别

javascript - 将 json 对象从 php 传递到 javascript

javascript - 无法 AJAXify 功能搜索

jquery - 在一个 div 中实现 jQuery,该 div 的内容刚刚用 jQuery 的 .load() 加载

ajax - 尝试使用 jQuery 访问 Instagram API

javascript - 将 MVC 模型转换为 Knockout JS ViewModel

json - 如何将文件和 JSON 数据与 Curl 一起发布?

json - npm install --global(对于 package.json 的所有依赖项)