$ .ajax的成功回调无法正常工作

时间:2011-08-29 06:20:01

标签: jquery ajax json asp.net-mvc-2 callback

我遇到的问题类似于this stackoverflow

我将选定对象列表发送到“更新”方法。这很好,问题在于成功回调。它不会因某种原因发生。该页面只是闪烁一次。在firebug的网络标签中,我可以看到对网址的调用。控制器返回bool所以在响应中我只有true。但显然我想做的是根据bool更新页面。这是MVC2项目 - 不确定这是否与它有关。

$.ajax({
    url: "/Update/UpdateAll",
    dataType: 'json',
    type: "POST",
    data: { selected: selected, statusID: statusID },
    success: function (result) {
        if (result) {
            alert('all successful');
            $('#resultsFromUpdate').html("Success");
        }
        else {
            alert('no deal');
            $('#resultsFromUpdate').html("Fail");
        }
    }
});

UpdateAll控制器方法:

public bool UpdateAll(string selected, string statusID)
{
...
> update some things
> return true if fine
> return fasle if not
...
}

这正是使用AJAX的重点,不需要页面发布......所以我做错了什么?

4 个答案:

答案 0 :(得分:4)

应该确实有一个JsonResult作为返回类型,因为您指定了“json”作为$ .ajax方法应该期望的内容。此外,$ .post方法通常更容易使用。

答案 1 :(得分:2)

这是一个深入研究Web开发人员免费调试工具库的好地方。

请注意,Chrome,Firefox和IE9都提供了开发人员工具(只需按F12 for IE9)。这些允许您单步执行代码并观察返回的变量。

您还可以使用fiddler来检查浏览器和visual studio之间传递的内容。


请注意,在ASP.NET 3.5中编写的启用JSON的WCF服务返回一个对象,其中返回值是数据成员d

你可以试试这个:

$.ajax({
    url: "/Update/UpdateAll",
    dataType: 'json',
    type: "POST",
    data: { selected: selected, statusID: statusID },
    success: function (result) {
        /* NOTE: Not checking result, but result.d */
        if (result.d) {
            alert('all successful');
            $('#resultsFromUpdate').html("Success");
        }
        else {
            alert('no deal');
            $('#resultsFromUpdate').html("Fail");
        }
    }
});

如果我猜对了,我就买彩票: - )

答案 2 :(得分:0)

我的建议是使用Firebug或其他Javascript调试工具和/或指定'错误'回调,至少除了“成功”之外还有“警报”。也许服务器发送的MIME类型不匹配,或者可能还有其他原因。

答案 3 :(得分:0)

这里有很多关于ajax / mvc的问题。您需要指定从控制器方法返回的内容。 检查达林关于这个主题的答案: Problem performing Ajax call from ASP.NET MVC2 app