开发者

MVC 3 & JQuery - ajaxStop or ajaxComplete not firing

开发者 https://www.devze.com 2023-04-04 05:15 出处:网络
It would appear that ajaxStart in my MVC 3 project is working but not ajaxStop or ajaxComplete.The problem is not browser specific as I\'ve tested this in IE9, Mozilla and Chrome.

It would appear that ajaxStart in my MVC 3 project is working but not ajaxStop or ajaxComplete. The problem is not browser specific as I've tested this in IE9, Mozilla and Chrome.

My project is just taking a series of letters and finding the combinations/permutations and displaying them to the user. The ajax function is initiated, the ajaxStart is fired and the "pl开发者_运维百科ease wait" indicator appears. When the ajax call is complete (I would assume) the table is populated but the ajaxStop/ajaxComplete is never fired and the "please wait" indicator never goes away.

Here's the javascript I use:

$(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');
            }
        });
    });
});

Is there something I missed. Any help would be greatly appreciated. Thanks.


Normally this should work. I suspect that your #submit is either a form submit button or an anchor. You have subscribed to the click event of this element which is where you fire the AJAX request. But you do not cancel the default action of this element because you didn't return false at the end of your function. So your AJAX request is trigerred and then the browser is redirected away and doesn't have time to finish the processing of this AJAX request.

So try returning false just after the $.ajax function.

0

精彩评论

暂无评论...
验证码 换一张
取 消