Zeigen ajax-spinner, ausblenden Seite Rendern, bis ALLE ajax-Aufrufe?
Ich Baue eine web-app mit vielen ajax-Aufrufe, 100+, die ich mit Spritzen alle meine Inhalte in meinem web-app.
Ich hatte gehofft, einen Weg zu finden, verstecken Sie die Seite und zeigen Sie das ajax-spinner, bis alle ajax-Aufrufe abgeschlossen sind... und/oder die ganze app geladen ist, dann Anzeige der Website.
andernfalls kann der Benutzer durch die Seiten navigieren, dass A. möglicherweise nicht vollständig korrekt dargestellt wird oder B. werden Mitte der navigation, wenn die Seite aktualisiert, um zu Hause, wenn voll geladen.
Kam ich über die Eingeweide der Lösung aber nicht sicher, wie Sie Sie umsetzen. oder die beiden zusammen...
college-Projekt so weit Weg von einem Profi, aber diese sah vielversprechend aus...
https://stackoverflow.com/a/14038050
$(document).ajaxStop(function () {
//$.active == 0
});
https://stackoverflow.com/a/12313138/2676129
$(document).ajaxStart(function() {
$.mobile.loading('show');
});
$(document).ajaxStop(function() {
$.mobile.loading('hide');
});
Wie könnte ich diese zu arbeiten? meine ajax-Aufrufe referenziert werden über eine Anzahl von .js-Dateien (verschiedene Abschnitte der app)
vielen Dank für jede Hilfe!!!
edit : Beispiel ajax-call verwendet
$.ajax(
{
url: "http://myurl",
type: 'get',
dataType: 'jsonp',
success: function(data)
{
if (data.result == 'success')
{
var previousPageID = "";
var currentPageID = "";
$.each(data.data, function(key, data) //scans through each Lv1 Category, creates a button and page and links thems.
{
var divLabel = data.label;
var pageID = currentPageID + data.label.replace(/\s/g, "");
$('#contentPage').append(generateButtons(pageID, divLabel)); //generates a normal button for a category from CMS and generates the relevant page to link to.
var previousPageID = currentPageID;
generateNextPage(data, previousPageID);
});
$("#Page").trigger("create"); //once html is injected into home <div> applies jquery mobile styling and effects (enhance)
}
}
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wollte nur darauf hinweisen, eine einfachere Lösung aber dennoch effektiv.
Sie benötigen zum Anhängen dieser laden von div auf Ihrer Seite.
Danach mit folgendem stellen wir sicher, dass dieses div wird ein-oder ausgeblendet werden, sobald ein ajax-Aufruf startet und Stoppt bzw.
Schließlich, fügen Sie den folgenden CSS zu sorgen, dass das div wird angezeigt Vollbild wie eine blockierte UI-element (was darauf hindeutet, dass die Seite geladen wird, etwas, das/statt des Spinners).
Demo auf JSFIDDLE hier
Ein Ansatz wäre das anzeigen einer loading-animation, die als Teil der ursprünglichen Seite & laden der Seite.
Warten Sie dann für Ihre hervorragende ajax-Aufrufe null zu erreichen, und sobald das passiert, verstecken sich die animation zum laden.
Ihrem Dokument bereit würde folgendermaßen Aussehen:
Markup hätte so etwas wie die letzten Elemente in den Körper:
Mit Stilen wie diese:
Wirklich lange übergangszeit und großen rotation sind da, um zu simulieren, ein für immer animation. Könnte man auch ersetzen diese mit einer CSS3-animation, animierte GIF-oder anderen um den Effekt zu bekommen, den Sie wollen.
Demo-fiddle (Hinweis: es wird nur verwendet, setTimeout zu fälschen, den Rückruf verbergen loader)