为什么POST回调函数不起作用

时间:2010-08-18 22:11:50

标签: jquery post

我正在尝试在jQuery $ .post函数中执行以下fadeIn/fadeOut action

$.post('Scenario/SaveScenario', function (data) {
    $('<div class="save-alert">The current scenario has been saved.</div>')
    .insertAfter($('.buttons'))
    .fadeIn('slow')
    .animate({ opacity: 1.0 }, 2000)
    .fadeOut('slow', function () {
        $(this).remove();
    });
});

然而,这不起作用,(显然)没有任何反应。 (我在Firebug中的函数内放置了一个断点,它永远不会到达。)当场景被放入我的数据库时,帖子成功发生。我不相信这是问题。

我通过在提交按钮上添加它作为点击事件来测试它,并且确实有效。

$(function () {
    $('#SaveScenario').click(function () {
        $('<div class="save-alert">The current scenario has been saved.</div>')
        .insertAfter($('.buttons'))
        .fadeIn('slow')
        .animate({ opacity: 1.0 }, 2000)
        .fadeOut('slow', function () {
            $(this).remove();
        });
    });
});

关于我做错了什么的理论?

1 个答案:

答案 0 :(得分:4)

来自jQuery文档:

  

如果使用jQuery.post()的请求返回错误代码,除非脚本还调用了全局.ajaxError()方法,否则它将无提示失败。

所以帖子可能会很好地打击服务器,但是当帖子回到jQuery(可能是一种意想不到的数据形式)时可能会出现某种错误,或者在回来的路上可能会出现一般错误(一个糟糕的回复代码)?尝试使用jQuery.ajax发送请求并提供error处理程序,以查看是否发生了某种错误。例如,如果您使用ajaxSetup并将dataType设置为json并且未从服务器返回有效的JSON,则jQuery将因解析错误而死亡。

当您点击http://your.site.com/Scenario/SaveScenario时,您会得到什么?