Jquery Ajax成功函数未调用

时间:2013-02-28 06:39:52

标签: c# javascript jquery asp.net-mvc

我从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的成功功能根本就不在这里。

5 个答案:

答案 0 :(得分:5)

您不必指定content-type,因为它设置了服务器期望数据的类型,您没有发送任何类型,因此不需要明确设置它,其次设置{{1} to dataType这是客户端期望来自服务器的数据的格式。但我真的怀疑它可能是任何错误的原因。

添加错误回调以确保在返回途中出现问题,例如

尝试

json

使用

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

  2. 在控制器内放置一个断点,以查看呼叫时是否点击了$.ajax({ type: "POST", url: "/Customer/GetDetails", dataType:'json', async: false,//WHY?? cache: false, success: function (data) { alert("success"); }, error:function(){ alert("something went wrong"); } });

  3. 修改

    使用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));