Jquery Ajax'的成功函数未调用
本文关键字:成功 函数 调用 Ajax Jquery | 更新日期: 2023-09-27 18:01:42
我正在从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);
});
}
});
});
我有一个名为客户的实体。
控制器方法从DB中获取记录并存储为客户列表,并在JsonResult类型中返回该列表。
public JsonResult GetDetails()
{
CustomerDAL customer = new CustomerDAL();
IList<Customer> custList = customer.GetDetail();
return Json(custList);
}
但是这里没有调用ajax的success函数
您不必指定content-type
,因为它设置了服务器期望数据的类型,您不发送任何数据,因此不需要显式设置它,其次将dataType
设置为json
,这是客户端期望来自服务器的数据的格式。但我真的怀疑这可能是任何错误的原因。
添加一个错误回调,以确保在返回的过程中出现错误,如
试
$.ajax({
type: "POST",
url: "/Customer/GetDetails",
dataType:'json',
async: false,//WHY??
cache: false,
success: function (data) {
alert("success");
},
error:function(){
alert("something went wrong");
}
});
使用
-
Firebug或chrome工具检查ajax请求并设置返回的状态码。
-
在控制器中放置一个断点,以查看当调用时
ActionResult
是否被击中。
用HttpPost
注释标记JsonResult,如
[HttpPost]
public JsonResult GetDetails()
{
CustomerDAL customer = new CustomerDAL();
IList<Customer> custList = customer.GetDetail();
return Json(custList);
}
今天开始。问题是,"成功"事件没有被触发,从jQuery的角度来看,实际上没有"成功":服务器返回的json代码格式错误!所以:仔细检查你的json格式,即在http://zaach.github.com/jsonlint/或其他地方使用json Lint。ajax函数非常"容忍"任何虚假/错误的设置,但格式错误的json代码绝对是一个错误。
换行
contentType: "application/json; charset=utf-8",
和这个
contentType: "application/json",
和添加数据类型
datatype: 'json'
在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模型的警报消息。我不知道你的模型有什么属性
代码:
return Json(custList);
改为:
return Json(new SelectList(custList));