开发者

Browers entering "busy" state on Ajax request

开发者 https://www.devze.com 2022-12-20 15:35 出处:网络
I am currently implementing a sort of HTTP Push using Long Polling for browsers that don\'t support multipart ajax responses.

I am currently implementing a sort of HTTP Push using Long Polling for browsers that don't support multipart ajax responses.

I have to admit that while the server side is working fine, i am relativly new to front end javascript development, and thus may have made some obvious mistakes

The problem is as follows LongPolling works perfectly on IE 6,7,8 and Firefox ( even though Firefox uses multipart i tested it with long polling too ) but Safari and Chrome enter the browsers "busy" state during the ajax requests. ( they show the windows wait cursor, and Safari also shows its "Loading" indicator in the title bar )

This is of course not desireable..

Here is my code to do the long poll based on Jquery 1.4.1:


function MepSubscribeToQueueLongPoll(name, callback) {

    var queueUrl = MepGetQueueUrl(name, "LongPoll");
    MepLongPollStep(queueUrl, callback);
};

function MepLon开发者_JAVA技巧gPollStep(url, callback) {
    $.ajax({
        url: url,
        async: true,
        cache: false,
        success: function (data,status,request) {
            callback(request.responseText);
            MepLongPollStep(url, callback);
        }
    });
};

Note that i am bypassing the data parsing functionality of Jquery by passing the request.responseText directly to the callback because Jquery does not seem to support multipart ajax respones and i wanted to be consistent across communication paths.


Since no better answer has stepped forward, I wonder if a simple timeout would solve the problem. Sorry to give a "guess" instead of a "I know this to be true answer", but this might actually fix it.:

function MepLongPollStep(url, callback) {
    $.ajax({
        url: url,
        async: true,
        cache: false,
        success: function (data,status,request) {
            callback(request.responseText);
            window.setTimeout( function(){
              MepLongPollStep(url, callback);
            },10);
        }
    });
};
0

精彩评论

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