【问题标题】:Display JSON Array Data Returned from Controller in Asp.Net MVC在 Asp.Net MVC 中显示从控制器返回的 JSON 数组数据
【发布时间】:2013-03-28 17:02:21
【问题描述】:

我的控制器中有一个操作方法:

public ActionResult IndexWithJson(int Id, int? page)
{
    int pageSize = 2;
    int pageNumber = (page ?? 1);

    using (var adsRepo = new AdvertisementRepository())
    {
        if (Id > 0)
        {
            return Json(new{
                Data = adsRepo.GetAdvertisementBySubCategoryId(Id).ToPagedList(pageNumber, pageSize)
            }, JsonRequestBehavior.AllowGet);
        }
        else
        {
            return View("404");
        }

    }
}

在浏览器中输出的结果是; 正如您在图片中看到的那样,我用一个名为“Data”的对象来包装数据(也在控制器中)。
现在,当我像这样使用 jQuery 调用它时;

var serviceBase = "/catalog/";

$.ajax({
    url: serviceBase + 'IndexWithJson',
    contentType: 'application/json; charset=utf-8',
    dataType:'json',
    data: { Id: categoryId, page: page },
    success: function (data) {
        alert(data.Title);
    }
});

我在警告框中看到 null。
这里有什么问题?
如何在警告框中只显示一个属性(参见属性的图片)。
我的 dataType 属性在 jQuery ajax 函数中是否正确? (我猜应该是JSONP

【问题讨论】:

  • 你的页面的 url(javascript 在哪里)和你的 mvc 站点的 url 是什么?他们在同一个域+端口上吗?
  • 是的,在同一个域/站点上。
  • 查看 var serviceBase = "/catalog/";我更新了问题
  • 看起来它是一个具有属性 Data 的对象,它是一个对象数组。试试data.Data[0].Title
  • 尝试将整个返回字符串化,看看里面有什么:alert(JSON.stringify(data))

标签: c# asp.net-mvc json jquery asp.net-mvc-4


【解决方案1】:

试试这个:

data.Data[0].Title

这应该可以工作

【讨论】:

  • 是的,这行得通,因为我在 Data 中总结了所有内容。而且它是一个数组。所以,我应该试试这个。
  • 不,只是自定义 jquery。我以前用过,但现在尝试做一些自定义编码。无论如何,谢谢哥们
【解决方案2】:

试试

alert(data[0].Title)

这是一个数组。

要显示所有你可以做的事情:

$.each(data, function(index, value) {
    $('#somediv').append(value.Title);
});

【讨论】:

  • TypeError: data[0] is undefined
  • 如果您检查 chrome 中的数据?尝试放置一个调试器;在你的 succes 函数中声明并使用 firebug 或 chrome 检查它。
  • 感谢您对我投反对票。我的回答有那么糟糕吗?
  • 如果你有 succes: function(data) then data 不是大写的 D. Mo##$ns
【解决方案3】:

我认为你需要使用 JSON.stringify 来发送参数(在你的 ajax 调用中对控制器。类似
data: JSON.stringify({ Id: categoryId, page: page }),
你是在控制器端正确获取 Id 和页面值?我认为您的 ajax 调用结果为 null,即客户端的 data = null。

【讨论】:

  • 这工作正常,因为请参阅图片。它正在返回数据
  • 它是您在输出中获得的完整字符串吗?在调试器模式下你不认为它是 JSON 对象吗?
  • 问题已解决。我应该使用这个 data.Data[0].Title
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多