MVC 3& JQuery - ajaxStop或ajaxComplete没有触发

时间:2011-09-13 03:04:37

标签: jquery asp.net-mvc-3

看起来我的MVC 3项目中的ajaxStart正在运行但不是ajaxStop或ajaxComplete。问题不是浏览器特定的,因为我在IE9,Mozilla和Chrome中测试了这个问题。

我的项目只是取一系列字母并找到组合/排列并将其显示给用户。启动ajax函数,触发ajaxStart并显示“请稍候”指示符。当ajax调用完成时(我会假设)填充表,但是ajaxStop / ajaxComplete永远不会被触发,“请等待”指示符永远不会消失。

这是我使用的javascript:

$(document).ready(function () {
    $(document).ajaxStart(function () {
        $('#ajaxBackground').show();
        $('#ajaxProgress').show();
    });

    $(document).ajaxStop(function () {
        $('#ajaxBackground').hide();
        $('#ajaxProgress').hide();
    });

    $('#submit').click(function () {
        var p = $('#prefix').val();
        var l = $('#letters').val();
        var s = $('#suffix').val();

        $.ajax({
            url: '@Url.Action("Search", "Home")',
            type: 'POST',
            dataType: 'json',
            data: { prefix: p, letters: l, suffix: s },
            success: function (jsonresults) {
                $('#searchResults').find('tr').remove().end();
                for (var i = 0; i <= jsonresults.length; i++) {
                    $('#searchResults').append('<tr><td>' + jsonresults[i].word + '</td><td>' + jsonresults[i].length + '</td><td>' + jsonresults[i].score + '</td></tr>');
                }
            },
            error: function () {
                alert('error');
            }
        });
    });
});

我错过了什么吗任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

通常这应该有效。我怀疑您的#submit是表单提交按钮或锚点。您已订阅此元素的click事件,该事件是您触发AJAX请求的位置。但是你没有取消这个元素的默认动作,因为你在函数结束时没有return false。所以你的AJAX请求是trigerred,然后浏览器被重定向,没有时间完成这个AJAX请求的处理。

因此,请尝试在$.ajax函数之后返回false。