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函数

Jquery Ajax'的成功函数未调用

您不必指定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");
            }
        });
使用

  1. Firebug或chrome工具检查ajax请求并设置返回的状态码。

  2. 在控制器中放置一个断点,以查看当调用时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));