我的控制器中有一个动作方法;
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
答案 0 :(得分:4)
试试这个:
data.Data[0].Title
这应该有效
答案 1 :(得分:0)
尝试
alert(data[0].Title)
这是一个数组。
要显示所有你可以做的事情:
$.each(data, function(index, value) {
$('#somediv').append(value.Title);
});
答案 2 :(得分:0)
我认为您需要使用JSON.stringify发送参数(在您对控制器的ajax调用中。类似于数据:JSON.stringify({Id:categoryId,page:page}),
你是否正确地在控制器端获得Id和页面值?我认为你的ajax调用结果是null,即客户端的data = null。