3

我的控制器中有一个动作方法;

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

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

4

3 回答 3

4

试试这个:

data.Data[0].Title

这应该工作

于 2013-04-06T07:30:09.183 回答
0

尝试

alert(data[0].Title)

这是一个数组。

要显示所有内容,您可以执行以下操作:

$.each(data, function(index, value) {
    $('#somediv').append(value.Title);
});
于 2013-04-06T07:23:49.167 回答
0

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

于 2013-04-06T07:32:23.383 回答