JQuery Ajax ()
funksjon er det laveste nivået for abstraksjon som er tilgjengelig for XMLHttpRequests (aka AJAX). Alle de andre jQuery AJAX-funksjonene, for eksempel laste()
, utnytte Ajax ()
funksjon. Bruker Ajax ()
funksjonen gir den beste funksjonaliteten tilgjengelig for XMLHttpRequests
. jQuery gir også andre høyere abstraksjoner for å gjøre svært spesifikke typer XMLHttpRequests
. Disse funksjonene er i hovedsak snarveier for Ajax ()
metode.
Disse snarveiene er:
laste()
få()
getJSON ()
getScript ()
post()
Poenget med å ta bort er at mens snarveiene er hyggelige til tider, bruker de alle Ajax ()
Bak scenen. Og når du vil ha alle funksjonene og tilpassingene som jQuery tilbyr når det gjelder AJAX, bør du bare bruke Ajax ()
metode.
Merknader: Som standard er Ajax ()
og laste()
AJAX funksjoner bruker begge FÅ
HTTP-protokoll.
JSON with Padding (JSONP) er en teknikk som tillater avsenderen av en HTTP-forespørsel, der JSON returneres, for å gi et navn på en funksjon som er påkalt med JSON-objektet som en parameter for funksjonen. Denne teknikken bruker ikke XHR. Den bruker skriptelementet, slik at data kan trekkes inn på et hvilket som helst nettsted, fra et hvilket som helst nettsted. Hensikten er å omgå de samme kildepolitiske begrensningene for XMLHttpRequest.
Bruker getJSON ()
jQuery-funksjonen, kan du laste inn JSON-data fra et annet domene når en JSONP-tilbakeringingsfunksjon legges til URL-adressen. Som et eksempel, her er hva en URL-forespørsel vil se ut som bruker Flickr API.
http://api.flickr.com/services/feeds/photos_public.gne?tags=resig&tagmode=all&format=json&jsoncallback
=?
De ?
verdien brukes som en snarvei som forteller jQuery å ringe funksjonen som er bestått som en parameter for getJSON ()
funksjon. Du kan erstatte ?
med navnet på en annen funksjon hvis du ikke vil bruke denne snarveien.
Nedenfor drar jeg inn på en nettside, ved hjelp av Flickr JSONP API, de nyeste bildene merket med "resig." Legg merke til at jeg bruker ?
snarvei så jQuery vil bare ringe tilbakeringingsfunksjonen jeg ga getJSON ()
funksjon. Parameteren som sendes til tilbakeringingsfunksjonen, er forespurt JSON-data.
Merknader: Pass på at du sjekker API-en for tjenesten du bruker for riktig bruk av tilbakeringingen. Som et eksempel bruker Flickr navnet jsoncallback =?
mens Yahoo! og Digg bruker navnet tilbakeringing =?
.
Når du gjør en XHR-forespørsel, vil Internet Explorer cache svaret. Hvis svaret inneholder statisk innhold med lang holdbarhet, kan caching være en god ting. Men hvis innholdet som blir bedt om, er dynamisk og kan endres med det andre, vil du være sikker på at forespørselen ikke blir cached av nettleseren. En mulig løsning er å legge til en unik spørringsstrengsverdi til slutten av nettadressen. Dette vil sikre at for hver forespørsel søker nettleseren en unik nettadresse.
// Legg til unik spørringstreng på slutten av URL-adressen: 'noen? Nocache =' + (newDate ()). GetTime ()
En annen løsning, som er mer en global løsning, er å sette opp alle AJAX-forespørsler som standard for å inneholde den ikke-cache-logikken vi nettopp har diskutert. For å gjøre dette, bruk ajaxSetup
Fungerer for globalt å slå av caching.
$ .ajaxSetup (cache: false // True som standard. False betyr at caching er slått av.);
Nå, for å overskrive denne globale innstillingen med individuelle XHR-forespørsler, endrer du bare hurtigbufferalternativet når du bruker Ajax ()
funksjon. Nedenfor er et kodet eksempel på å gjøre en XHR-forespørsel ved hjelp av Ajax ()
funksjonen, som vil overskrive den globale innstillingen og cache forespørselen.
$ .ajaxSetup (cache: false // True som standard. False betyr at caching er slått av.); jQuery.ajax (cache: true, url: 'some', type: 'POST');