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