jQuery .ajax () nie działa w Safari, gdy uzyskanie zwróconych danych zajmuje sekundy

Korzystam z metody jQuery ajax (), aby przekazać dane (GET) na inną stronę ExportData i uzyskać zwrócone dane („zakończone powodzeniem / nieudane”) po tej stronie. Strona ExportData zajmuje około 10 sekund, zanim zostanie zwrócona „pomyślnie / nieudana”.

Kod, którego używam, działa dobrze w innych przeglądarkach (FF / IE / Chrome), ale NIE w Safari. W inspektorze kodu Safari pokazany kod statusu to -1001 i nie otrzymano żadnych danych. Podczas gdy istnieją inne żądania ajax () (nie potrzebują tak długo, jak ta strona zwraca dane) i działają (ze statusem 200).

Zgadłem, że długi odstęp między wysyłaniem a odbieraniem danych powoduje błąd przeglądarki Safari. Jednak odkryłem również, że błąd -1001 pokazuje się bardzo szybko, co może oznaczać, że ExportData.php nie został wykonany.

Czy ktoś ma pomysł na ten problem? Twoja pomoc będzie bardzo doceniona!

Kod to:

ExportData: function (date,view) {
    ajaxcall.data = {};
    ajaxcall.url = 'ExportData.php?Date='+date+'&View='+view;
    ajaxcall.callbackfunction = UserEvents.ExportSuccess;
    ajaxcall.Call();
},

„Ajaxcall” znajduje się w innym pliku:

var ajaxcall = {
    SitePath: '',
    data: '',
    url: '',
    callbackfunction: '',
    fileElementClass: '',
    AjaxRequest: false,
    callback: true,
    Call: function () {
        if (ajaxcall.AjaxRequest == true) {
            alert(ajaxcall.AjaxRequest);
            return;
        }
        else {
            try {
                ajaxcall.AjaxRequest == true;
                $.ajax({
                    type: "GET", 
                    url: ajaxcall.url,
                    data: ajaxcall.data,
                    dataType: "json",
                    async: false,
                    success: function (data) {
                            if (ajaxcall.callback == true) {
                                ajaxcall.callbackfunction(data);
                            }
                    },
                    error: function (request, status, error) {},
                    complete: function () {
                        ajaxcall.AjaxRequest = false;
                    }
                });
            }
            catch (e) {
                ajaxcall.AjaxRequest == false;
            }
        }
    },
};

Dzięki, Sean Liu

questionAnswers(2)

yourAnswerToTheQuestion