我从Jquery ajax调用MVC控制器方法。
$(document).ready(function () {
$.ajax({
type: "POST",
url: "/Customer/GetDetails",
contentType: "application/json; charset=utf-8",
async: false,
cache: false,
success: function (data) {
$.each(data, function (index, value) {
alert(value);
});
}
});
});
我有一个名为客户的实体。
Controller Method从DB获取记录并存储为Customer of List,并以JsonResult类型返回该列表。
public JsonResult GetDetails()
{
CustomerDAL customer = new CustomerDAL();
IList<Customer> custList = customer.GetDetail();
return Json(custList);
}
但我的ajax的成功功能根本就不在这里。
答案 0 :(得分:5)
您不必指定content-type
,因为它设置了服务器期望数据的类型,您没有发送任何类型,因此不需要明确设置它,其次设置{{1} to dataType
这是客户端期望来自服务器的数据的格式。但我真的怀疑它可能是任何错误的原因。
添加错误回调以确保在返回途中出现问题,例如
尝试
json
使用
Firebug或chrome工具,用于检查ajax请求并设置返回的状态代码。
在控制器内放置一个断点,以查看呼叫时是否点击了$.ajax({
type: "POST",
url: "/Customer/GetDetails",
dataType:'json',
async: false,//WHY??
cache: false,
success: function (data) {
alert("success");
},
error:function(){
alert("something went wrong");
}
});
。
修改
使用ActionResult
注释标记您的JsonResult,如
HttpPost
答案 1 :(得分:1)
替换你的行
contentType: "application/json; charset=utf-8",
这一个
contentType: "application/json",
并添加数据类型
datatype: 'json'
答案 2 :(得分:1)
今天进入那里。问题是,“成功”事件没有被触发,实际上从jQuery的角度来看并没有“成功”:服务器返回的json代码格式不正确! 所以:仔细检查你的json格式,即在http://zaach.github.com/jsonlint/或其他地方使用JSON Lint。 ajax函数对任何错误/错误设置都非常“宽容”,但格式错误的json代码肯定是错误的。只要错误事件被触发,就会出现错误。
答案 3 :(得分:0)
在ajax-success函数中有一个对象列表作为List。
解析它试试这个
$(document).ready(function () {
$.ajax({
type: "POST",
url: "/Customer/GetDetails", // or better way '@Url.Action("GetDetails", "Customer")'
contentType: "application/json; charset=utf-8",
success: function (data) {
$.each(data, function (index, customer) {
alert(customer.id, customer.name, customer.surname);
});
}
});
});
控制器
public JsonResult GetDetails()
{
CustomerDAL customer = new CustomerDAL();
IList<Customer> custList = customer.GetDetail();
return Json(custList);
}
例如假设您的CustomerDAL模型
class CustomerDAL
{
public int id { get; set; }
public string name { get; set; }
public string surname { get; set; }
}
修改CustomerDAL模型的提醒消息。我不知道你的模型中有哪些属性。
答案 4 :(得分:-1)
您的代码:
return Json(custList);
将其更改为:
return Json(new SelectList(custList));