jQuery Succinct jQuery și Ajax

Funcția jQuery ajax () este abstracția de nivel inferior

JQuery ajax () este cel mai scăzut nivel de abstractizare disponibil pentru XMLHttpRequests (alias AJAX). Toate celelalte funcții jQuery AJAX, cum ar fi sarcină(), leverage the ajax () funcţie. Utilizarea ajax () funcția oferă cea mai mare funcționalitate disponibilă pentru xmlhttprequest. jQuery oferă, de asemenea, alte abstracții de nivel superior pentru a face tipuri foarte specifice de xmlhttprequest. Aceste funcții sunt, în esență, comenzi rapide pentru ajax () metodă.

Aceste metode de comenzi rapide sunt:

  • sarcină()
  • obține()
  • getJSON ()
  • getScript ()
  • post()

Punctul de a lua away este că, în timp ce comenzile rapide sunt frumos uneori, toate folosesc ajax () în spatele scenelor. Și, atunci când doriți toate caracteristicile și particularizările oferite de jQuery atunci când vine vorba de AJAX, atunci ar trebui să utilizați doar ajax () metodă.

Note: În mod implicit, funcția ajax () și sarcină() Funcțiile AJAX utilizează ambele funcții OBȚINE Protocolul HTTP.


jQuery susține JSONP cu domenii cross-domain

JSON cu Padding (JSONP) este o tehnică care permite expeditorului unei cereri HTTP, unde JSON este returnat, să furnizeze un nume pentru o funcție invocată cu obiectul JSON ca parametru al funcției. Această tehnică nu utilizează XHR. Utilizează elementul script astfel încât datele pot fi trase în orice site, de pe orice site. Scopul este de a ocoli limitele de politică din aceeași sursă ale XMLHttpRequest.

Utilizarea getJSON () Funcția jQuery, puteți încărca datele JSON dintr-un alt domeniu când o funcție de retur JSONP este adăugată la adresa URL. Ca exemplu, iată ce ar arăta o solicitare de adresă URL utilizând API-ul Flickr.

http://api.flickr.com/services/feeds/photos_public.gne?tags=resig&tagmode=all&format=json&jsoncallback=?

? valoarea este folosită ca o comandă rapidă care îi spune jQuery să apeleze funcția care este trecută ca parametru al lui getJSON () funcţie. Ai putea înlocui ? cu numele unei alte funcții, dacă nu doriți să utilizați această comandă rapidă.

Mai jos, introduc o pagină Web, folosind API-ul Flickr JSONP, cele mai recente fotografii etichetate cu "resig". Observați că folosesc ? o comandă rapidă, astfel încât jQuery va apela pur și simplu funcția de apel inversă pe care am furnizat-o getJSON () funcţie. Parametrul transmis funcției de retur este datele JSON solicitate.

       

Note: Asigurați-vă că verificați API-ul serviciului pe care îl utilizați pentru utilizarea corectă a apelului invers. De exemplu, Flickr folosește numele jsoncallback =? întrucât Yahoo! și Digg utilizați numele apel invers =?.


Opriți un browser de la cererile de cache XHR

Când faceți o solicitare XHR, Internet Explorer va memora cache răspunsul. Dacă răspunsul conține conținut static cu o durată mare de conservare, cache-ul poate fi un lucru bun. Cu toate acestea, dacă conținutul solicitat este dinamic și se poate modifica cu cel de-al doilea, veți dori să vă asigurați că cererea nu este stocată în cache de browser. O soluție posibilă este să adăugați o valoare unică a șirului de interogare la sfârșitul adresei URL. Acest lucru va asigura că pentru fiecare solicitare browserul solicită o adresă URL unică.

 // Adăugați un șir de interogări unic la sfârșitul urlului URL: 'some? Nocache =' + (newDate ()). GetTime ()

O altă soluție, care este mai mult o soluție globală, este de a seta toate solicitările AJAX în mod implicit pentru a conține logica fără cache pe care tocmai am discutat-o. Pentru a face acest lucru, utilizați ajaxSetup pentru a dezactiva în întregime cache-ul.

 $ .ajaxSetup (cache: false // Adevărat implicit. False înseamnă că cache-ul este oprit.);

Acum, pentru a suprascrie această setare globală cu cereri individuale XHR, pur și simplu schimbați opțiunea cache atunci când utilizați ajax () funcţie. Mai jos este un exemplu codat de a face o cerere XHR folosind ajax () , care va suprascrie setarea globală și va memora cache-ul.

 $ .ajaxSetup (cache: false // Adevărat implicit. False înseamnă că cache-ul este oprit.); jQuery.ajax (cache: true, url: 'some', tip: 'POST');
Cod