【问题标题】:Ajax gets nested data, the result 500 (Internal Server Error)Ajax 获取嵌套数据,结果 500 (Internal Server Error)
【发布时间】:2014-03-17 19:50:21
【问题描述】:

我有简单的 ajax 调用

$.get("api/dashboard/tile/1x1/" + tag, { id: id },
               function (tile) {
                   options.result(modelmapper.fromDb(tile, 'dashboard'));
               }, 'json')

从 ASP.NET MVC 控制器读取。嵌套到 Person 中的 Object Tile

class Person{
public int Id { get; set; }
public Tile Tile { get; set; }}

class Tile{
public int Id { get; set; }}

问题:当 Id 不同时一切正常,如果 Id 相同则有点

加载资源失败:服务器响应状态为 500(内部服务器错误)

我能看到的唯一一个解决方案(显然它有效)将 Id 重命名为像 PersonId 这样有意义的东西,但是我失去了很多灵活性并且需要重新编写应用程序的重要部分。请帮忙。

更新 控制器

[System.Web.Http.ActionName("tile")]
    [System.Web.Http.AcceptVerbs("GET")]
    // GET api/dashboard/tile/1x1/person
    public Person Tile()
    {
        var tile = new Tile();
        tile.Id = 1;

        var personTile = new Person();
        personTile.Id = 1;
        personTile.Tile = tile;
        return personTile;
    }

解决方案:我发现的唯一一种解决方案是在控制器 JsonConvert.SerializeObject 中强制序列化数据,然后在客户端 JSON.Parse() 上进行脱盐

【问题讨论】:

  • 向我们展示您的控制器代码
  • 500 服务器错误表明您的服务器端代码出现故障。在依赖 AJAX 代码之前,您需要做任何必要的事情来解决这个问题。
  • 但是从地址栏调用它时我能够接收 XML
  • 可能是序列化问题?

标签: jquery asp.net-mvc serialization


【解决方案1】:

我发现的唯一一种解决方案是在控制器 JsonConvert.SerializeObject 中强制序列化数据,然后在客户端 JSON.Parse() 上进行脱盐

【讨论】:

    猜你喜欢
    • 2015-09-15
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2023-03-30
    • 2017-02-18
    • 1970-01-01
    • 2015-08-16
    • 2022-12-08
    相关资源
    最近更新 更多