Care este diferența între $.ajax()
și $.obține()
și $.load()
?
Care este mai bine să folosiți și în ce condiții?
$.ajax()
este cel mai configurabil unul, în cazul în care veți obține un control fin granulate peste HTTP și astfel. Te're, de asemenea, posibilitatea de a avea acces direct la XHR-obiect folosind această metodă. Puțin mai granulație fină eroare de manipulare este, de asemenea, furnizate. Prin urmare, poate fi mai complicat și de multe ori inutilă, dar, uneori, foarte util. Ai de-a face cu datele returnate-te cu un apel invers.
$.get()
este doar o prescurtare pentru $.ajax()
dar rezumate unele dintre configurațiile departe, setare valori implicite rezonabile pentru ceea ce este ascuns de la tine. Returnează datele de la un apel invers. Se permite doar IA-cereri deci este însoțită de $.post()
funcția similare abstractizare, doar pentru POST
.load()
este similar $.obține()
dar adaugă funcționalitate care vă permite să definiți în cazul în care în documentul datele returnate este de a fi introdus. Prin urmare, chiar utilizabil numai atunci când apelul numai ca va duce la HTML. Este numit diferit de celelalte, la nivel mondial, apeluri, deoarece este o metodă legat de un anumit jQuery-înfășurat element de DOM. Prin urmare, s-ar putea face: $('#divWantingContent').de încărcare(...)
Ar trebui remarcat faptul că toate $.obține()
, $.post()
, .load()
sunt doar ambalaje pentru $.ajax()
ca's a numit pe plan intern.
Mai multe detalii în Ajax-documentația de jQuery: http://api.jquery.com/category/ajax/
Metodele oferi straturi diferite de abstractizare.
$.ajax()
vă oferă control deplin asupra cerere Ajax. Ar trebui să-l folosească, dacă alte metode nu't a satisface nevoile dumneavoastra.
$.obține()
execută un Ajax "OBȚINE" cerere. Datele returnate (care poate fi orice de date) va fi transmis la apel invers handler.
$(selector).load()
se va executa o Ajax "OBȚINE" cerere și va stabili conținutul selectat întors de date (care ar trebui să fie text sau HTML).
Depinde de situația în care metoda ar trebui să utilizați. Dacă vrei să faci lucruri simple, nu este nevoie să deranjez cu $.ajax()
.
E. g. ai câștigat't folosi $.load()
, dacă datele returnate va fi JSON care trebuie să fie prelucrate în continuare. Aici v-ar folosi fie $.ajax () "sau"$.obține()
.
http://api.jquery.com/jQuery.ajax/
jQuery.ajax()
Descriere: Efectua o asincron HTTP (Ajax) cerere.
The full monty, vă permite să facă orice fel de cerere Ajax.
http://api.jquery.com/jQuery.get/
jQuery.obține()
Descriere: Încărca datele de la server folosind o cerere HTTP GET.
Numai vă permite să vă face cereri HTTP GET, necesită un pic mai puțin de configurare.
.load()
Descriere: Încărca date de pe server și loc de întors HTML în potrivire element.
De specialitate pentru a obține date și se injectează într-un element.
Foarte de bază, dar
$.load()
: Încărcați o bucată de html într-un recipient DOM.$.obține()
: Utilizați această opțiune dacă doriți să faceți o IA **** apel și să se joace foarte mult cu răspunsul.$.post()
: Utilizați această opțiune dacă doriți pentru a face un POST apel și nu doriți să încărcați, ca răspuns la un container de DOM.$.ajax()
: Utilizați această opțiune dacă aveți nevoie pentru a face ceva atunci când XHR eșuează, sau aveți nevoie pentru a specifica opțiunile ajax (de exemplu, cache: adevărat) pe zbor.Notă importantă : jQuery.load() metoda poate face nu numai IA dar, de asemenea, POST facilitati, dacă date parametru este furnizat (a se vedea: http://api.jquery.com/load/)
date Tip: PlainObject sau Șir Un simplu obiect sau șir de caractere care este trimis la server cu cererea.
Cerere Metodă POST metodă este folosită în cazul în care datele sunt furnizate ca o obiect; în caz contrar, IA se presupune.
Example: pass arrays of data to the server (POST request)
$( "#objectID" ).load( "test.php", { "choices[]": [ "Jon", "Susan" ] } );
$.get = $.ajax({type: 'GET'});
$.load()
este funcția de helper care numai pot fi invocate pe elemente.
$.ajax()
vă oferă control maxim. puteți specifica dacă doriți pentru a POSTA date, are mai multe callback etc.
Toată lumea are dreptate. Funcții .de încărcare
, .obține", și".post
, sunt diferite moduri de a folosi funcția .ajax
.
Personal, mi se pare .ajax crud funcție foarte confuz, și preferă să utilizeze sarcina, get sau post ca am nevoie de ea.
POST are următoarea structură:
$.post(target, post_data, function(response) { });
IA are următoarele:
$.get(target, post_data, function(response) { });
SARCINĂ are următoarele:
$(*selector*).load(target, post_data, function(response) { });
După cum puteți vedea, există mici diferențe între ele, deoarece ei situație care determină care să o folosiți. Nevoie pentru a trimite informații către un fișier de pe plan intern? Utilizare .post (acest lucru ar fi cele mai multe cazuri). Nevoie pentru a trimite informații într-un mod care ar putea oferi un link pentru moment anume? Utilizare .obține. Ambele dintre ele permite un apel invers în cazul în care vă puteți ocupa de răspuns de fișiere.
O notă importantă este că .sarcina acționează în două moduri diferite. Dacă vă oferi doar url-ul țintă document, se va act ca să (și eu zic să acționeze pentru că am testat de verificare pentru $_POST
, în cel numit PHP în timp ce utilizați în mod implicit .sarcina comportamentul și detectează $_POST
, nu $_GET
; poate ar fi mai exact să spun că acționează ca .post fara nici un argument); cu toate acestea, ca http://api.jquery.com/load/ spune că, odată ce vă oferă o serie de argumente a funcției, se va POSTA informații fișier. Indiferent de caz este, .funcția de încărcare în mod direct de a introduce informații într-un element de DOM, care în MULTE cazuri este foarte lizibil, și foarte directe, dar oferă încă un apel invers, dacă vrei să faci ceva mai mult cu răspunsul. În plus, .încărcați-vă permite de a extrage un anumit bloc de cod dintr-un fișier, oferindu-vă posibilitatea de a salva un catalog, de exemplu, într-un fișier html, și de a prelua piese (elemente) direct în elemente DOM.
Ambele sunt folosite pentru a trimite niște date și de a primi un răspuns, folosind aceste date.
IA: Obține informații stocate în server. (de exemplu, căutare, tweet, persoană de informații). Dacă doriți să trimiteți informații primi apoi cerere trimite cerere folosind proces.php?name=subroto
Astfel încât acesta trimite informații prin intermediul url-ul. Url-ul nu poate ocupa mai mult de 2036 char. Deci pentru blog poate vă amintiți că nu este posibil?
POST: Postul face același lucru ca și OBȚINE. Înregistrare utilizator, autentificare Utilizator, date de Mare trimite, Post pe Blog. Dacă aveți nevoie pentru a trimite informații sigure apoi utilizați post sau pentru date de mare ca să nu meargă prin url.
AJAX: $.obține()
și $.post()
conțin caracteristici care sunt subseturi ale $.ajax()
. Ea are mai mult de configurare.
$.get () metoda, care este un fel de prescurtare pentru
$.ajax(). Atunci când se utilizează
$.obține ()`, în loc de a trece într-un obiect, trece în argumente. La nivel minim, ai nevoie de primele două argumente, care sunt URL-ul fișierului pe care doriți pentru a prelua (de exemplu. test.txt) și un succes de apel invers.
Toată lumea a explicat subiect foarte bine. Mai este un punct pe care aș dori să adăugați aproximativ .load() metodă.
Ca pe Încărcați documentul, dacă se adaugă terminația selector de date url-ul, atunci acesta nu va executa script-uri în conținutul de încărcare.
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html #content");
})
Pe de altă parte, după scoaterea selectorului din url-ul, script-uri într-conținut nou va rula. Încerca acest exemplu
după eliminarea #conținutul în url-ul în index.html fișier
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html");
})
Nu există nici o astfel de în-a construit caracteristică furnizate de alte metode în discuție.