JQuery ajax ()
funktionen är den lägsta abstraktionsgraden som finns tillgänglig för XMLHttpRequests (aka AJAX). Alla andra jQuery AJAX funktioner, till exempel ladda()
, utnyttja ajax ()
fungera. Använda ajax ()
funktion ger den bästa funktionaliteten tillgänglig för XMLHttpRequests
. jQuery ger också andra högre abstraktioner för att göra mycket specifika typer av XMLHttpRequests
. Dessa funktioner är huvudsakligen genvägar för ajax ()
metod.
Dessa genvägsmetoder är:
ladda()
skaffa sig()
getJSON ()
getScript ()
posta()
Poängen att ta bort är att medan genvägarna är trevliga ibland använder de alla ajax ()
bakom kulisserna. Och när du vill ha alla funktioner och anpassningar som jQuery erbjuder när det gäller AJAX, ska du bara använda ajax ()
metod.
Anmärkningar: Som standard är ajax ()
och ladda()
AJAX funktioner använder båda SKAFFA SIG
HTTP-protokoll.
JSON med padding (JSONP) är en teknik som tillåter avsändaren av en HTTP-förfrågan, där JSON returneras, för att ge ett namn på en funktion som är påkallad med JSON-objektet som en parameter för funktionen. Denna teknik använder inte XHR. Det använder manuselementet så att data kan dras in på vilken webbplats som helst, från vilken sida som helst. Syftet är att kringgå samma källkodsbegränsningar för XMLHttpRequest.
Använda getJSON ()
jQuery-funktionen kan du ladda JSON-data från en annan domän när en JSONP-återuppringningsfunktion läggs till URL-adressen. Som ett exempel är här vad en URL-förfrågan skulle se ut med att använda Flickr API.
http://api.flickr.com/services/feeds/photos_public.gne?tags=resig&tagmode=all&format=json&jsoncallback
=?
De ?
värdet används som en genväg som berättar för jQuery att ringa den funktion som passeras som en parameter för getJSON ()
fungera. Du kan ersätta ?
med namnet på en annan funktion om du inte vill använda den här genvägen.
Nedan drar jag till en webbsida med hjälp av Flickr JSONP API, de senaste bilderna märkta med "resig." Lägg märke till att jag använder ?
genväg så jQuery kommer helt enkelt att ringa den återuppringningsfunktion jag tillhandahöll getJSON ()
fungera. Parametern som skickas till återuppringningsfunktionen är den begärda JSON-data.
Anmärkningar: Se till att du kontrollerar API för den tjänst du använder för korrekt användning av återuppringningen. Som ett exempel använder Flickr namnet jsoncallback =?
medan Yahoo! och Digg använder namnet callback =?
.
När du gör en XHR-förfrågan kommer Internet Explorer att cache svaret. Om svaret innehåller statiskt innehåll med en lång hållbarhet, kan cachning vara en bra sak. Om innehållet som begärs är dynamiskt och kan ändras med det andra, vill du se till att begäran inte cachas av webbläsaren. En möjlig lösning är att lägga till ett unikt frågesträngs värde till slutet av webbadressen. Detta säkerställer att varje begäran begär webbläsaren en unik URL.
// Lägg till en unik frågesträng vid slutet av URL-adressen: 'some? Nocache =' + (newDate ()). GetTime ()
En annan lösning, som är mer av en global lösning, är att ställa in alla AJAX-förfrågningar som standard för att innehålla den no-cache-logik som vi just diskuterat. För att göra detta, använd ajaxSetup
funktion för att globalt stänga av cachning.
$ .ajaxSetup (cache: false // True som standard. Falskt betyder att caching är avstängt.);
För att kunna överskriva denna globala inställning med individuella XHR-förfrågningar, ändrar du bara cachemöjligheten när du använder ajax ()
fungera. Nedan är ett kodat exempel på att göra en XHR-förfrågan med hjälp av ajax ()
funktion, som överskrider den globala inställningen och cachar begäran.
$ .ajaxSetup (cache: false // True som standard. Falskt betyder att caching är avstängt.); jQuery.ajax (cache: true, url: 'some', typ: 'POST');