beforeSend in $.getJSON
Wie verwende ich beforeSend
Rückruf in $.getJSON
(cross-domain).
Genauer $.getJSON
ist Ruf an eine YQL-service
Wie
select * from html where
url="http://www.yahoo.com"
- Zu tun, was genau?
- Um zu zeigen, ein lade-gif...
- Warum nicht einfach nur zeigen, das laden von gif - ... und dann rufen getJSON?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur zum Zweck der beforeSend ist, um auf die raw-XHR-Objekt (normalerweise für die Einstellung der HTTP-Header auf es). Sie brauchen es nicht für kicking off Spinner und dergleichen. Dieser code hier (von @petersendidit):
Ist besser wie folgt geschrieben:
Was bedeutet, es sei denn, Sie benötigen keine erweiterten Optionen in jQuery.ajax, Ihren ursprünglichen plan zu verwenden jQuery.getJSON ist auch gut so. Also Sie sagen, Sie wollen zeigen, ein lade-GIF, nur tun Sie dies, und vergessen Sie
beforeSend
.$.getJSON ist nur eine kurze cut-Funktion der $.ajax-Funktion
Also, wenn Sie jemals brauchen nichts mehr zu machen dann ist die grundlegende getJSON Anrufe verwenden Sie einfach $.ajax wie:
Die andere Möglichkeit ist die Verwendung der $.ajaxSend und $.ajaxComplete Funktionen, aber dadurch werden diese Funktionen aufgerufen werden, bevor und nach jedem ajax-Aufruf.
Ich denke, dass Sie verwenden möchten $.ajaxStart() und $.ajaxStop(). Diese lassen Sie ein-und ausblenden, ein lade-gif, ajax/JSON requests. Es tut auch das richtige, wenn es mehrere ajax-requests Los.
Ich glaube, Sie sind mit JSONP für den Aufruf ein Skript von einem anderen server.
Ich machte meine Hausaufgaben und es ist nicht keine beforeSend Veranstaltung auf JSONP-Aufruf.
Die richtige Methode ist die Verwendung der beforeSend Rückruf, da komplette callback wird nicht aufgerufen-Cache Abfragen, weil eine Anfrage nicht gesendet in diesem Fall, daher beforeSend wird nicht aufgerufen.
Anderen Worten, wenn Sie ein Bild laden, bevor Sie Ihre $.Ajax-request und verlassen Sie sich auf das verstecken innerhalb Abschluss die Anforderung, wenn die Abfrage wird zwischengespeichert, Ihre be-Bild geklebt, auf "anzeigen".
So ist dies die richtige Methode;