Qual è la differenza tra $.ajax()
e $.get()
e $.load()
?
Quale è meglio usare e in quali condizioni?
Qual è la differenza tra $.ajax()
e $.get()
e $.load()
?
Quale è meglio usare e in quali condizioni?
Risposte:
$.ajax()
è il più configurabile, in cui si ottiene un controllo granulare delle intestazioni HTTP e simili. Puoi anche ottenere l'accesso diretto all'oggetto XHR usando questo metodo. Viene inoltre fornita una gestione degli errori leggermente più dettagliata. Può quindi essere più complicato e spesso non necessario, ma a volte molto utile. Devi gestire tu stesso i dati restituiti con un callback.
$.get()
è solo una scorciatoia per $.ajax()
ma estrae alcune delle configurazioni, impostando valori predefiniti ragionevoli per ciò che ti nasconde. Restituisce i dati a una richiamata. Permette solo richieste GET, quindi è accompagnato dalla $.post()
funzione per astrazione simile, solo per POST
.load()
è simile $.get()
ma aggiunge funzionalità che consente di definire dove devono essere inseriti i dati restituiti nel documento. Quindi utilizzabile solo quando la chiamata provocherà solo HTML. Viene chiamato in modo leggermente diverso rispetto alle altre chiamate globali, in quanto è un metodo legato a un particolare elemento DOM avvolto in jQuery. Pertanto, si farebbe:$('#divWantingContent').load(...)
Va notato che tutti $.get()
, $.post()
, .load()
sono tutti i wrapper solo per$.ajax()
come viene chiamato internamente.
Maggiori dettagli nella documentazione Ajax di jQuery: http://api.jquery.com/category/ajax/
I metodi forniscono diversi livelli di astrazione.
$.ajax()
ti dà il pieno controllo sulla richiesta Ajax. Dovresti usarlo se gli altri metodi non soddisfano pienamente le tue esigenze.
$.get()
esegue una GET
richiesta Ajax . I dati restituiti (che possono essere qualsiasi dato) verranno passati al gestore di callback.
$(selector).load()
eseguirà una GET
richiesta Ajax e imposterà il contenuto dei dati restituiti selezionati (che dovrebbe essere di testo o HTML).
Dipende dalla situazione quale metodo si dovrebbe usare. Se vuoi fare cose semplici, non c'è bisogno di preoccuparsi $.ajax()
.
Ad esempio, non userai $.load()
, se i dati restituiti saranno JSON che devono essere ulteriormente elaborati. Qui useresti $.ajax()
o $.get()
.
http://api.jquery.com/jQuery.ajax/
jQuery.ajax()
Descrizione: esegue una richiesta HTTP asincrona (Ajax).
L'intero importo, ti consente di effettuare qualsiasi tipo di richiesta Ajax.
http://api.jquery.com/jQuery.get/
jQuery.get()
Descrizione: carica i dati dal server utilizzando una richiesta GET HTTP.
Ti consente solo di effettuare richieste HTTP GET, richiede un po 'meno di configurazione.
.load()
Descrizione: carica i dati dal server e posiziona l'HTML restituito nell'elemento corrispondente.
Specializzato per ottenere dati e iniettarli in un elemento.
Molto semplice ma
$.load()
: Carica un pezzo di HTML in un contenitore DOM.$.get()
: Utilizzare questa opzione se si desidera effettuare una chiamata GET e giocare ampiamente con la risposta.$.post()
: Utilizzare questa opzione se si desidera effettuare una chiamata POST e non si desidera caricare la risposta su un DOM contenitore.$.ajax()
: Usalo se devi fare qualcosa quando XHR fallisce, o devi specificare al volo opzioni ajax (es. Cache: true).Nota importante: il metodo jQuery.load () può non solo GET ma anche richieste POST , se viene fornito il parametro data (consultare: http://api.jquery.com/load/ )
datiTipo di : PlainObject o String Un oggetto o una stringa semplice che viene inviato al server con la richiesta.
Metodo di richiesta Il metodo POST viene utilizzato se i dati vengono forniti come oggetto; in caso contrario, viene assunto GET .
Example: pass arrays of data to the server (POST request)
$( "#objectID" ).load( "test.php", { "choices[]": [ "Jon", "Susan" ] } );
Tutti hanno ragione. Le funzioni .load
, .get
e .post
, sono modi diversi di utilizzare la funzione .ajax
.
Personalmente, trovo la funzione raw .ajax molto confusa e preferisco usare load, get o post quando ne ho bisogno.
Il POST ha la seguente struttura:
$.post(target, post_data, function(response) { });
OTTIENI:
$.get(target, post_data, function(response) { });
LOAD ha il seguente:
$(*selector*).load(target, post_data, function(response) { });
Come puoi vedere, ci sono piccole differenze tra loro, perché è la situazione che determina quale usare. Devi inviare le informazioni a un file internamente? Usa .post (questo sarebbe la maggior parte dei casi). Devi inviare le informazioni in modo tale da poter fornire un link al momento specifico? Usa .get. Entrambi consentono un callback in cui è possibile gestire la risposta dei file.
Una nota importante è che .load agisce in due modi diversi. Se fornisci solo l'URL del documento di destinazione, fungerà da get (e dico act perché ho testato il controllo $_POST
nel PHP chiamato mentre utilizzavo il comportamento predefinito .load e rileva $_POST
, non$_GET
; forse sarebbe più preciso dire che agisce come .post senza alcun argomento); tuttavia, come http://api.jquery.com/load/dice, una volta fornita una serie di argomenti alla funzione, POST le informazioni sul file. In ogni caso, la funzione .load inserirà direttamente le informazioni in un elemento DOM, che in MOLTI casi è molto leggibile e molto diretto; ma fornisce comunque una richiamata se si desidera fare qualcosa in più con la risposta. Inoltre, .load ti consente di estrarre un determinato blocco di codice da un file, dandoti la possibilità di salvare un catalogo, ad esempio, in un file html e recuperarne pezzi (elementi) direttamente negli elementi DOM.
$.get = $.ajax({type: 'GET'});
$.load()
è una funzione di supporto che può essere invocata solo sugli elementi.
$.ajax()
ti dà il massimo controllo. è possibile specificare se si desidera POST dati, ottenere più callback ecc.
Entrambi vengono utilizzati per inviare alcuni dati e ricevere una risposta utilizzando tali dati.
OTTIENI : ottieni informazioni archiviate nel server. (ad es. ricerca, tweet, informazioni sulla persona). Se si desidera inviare informazioni, quindi ottenere la richiesta di invio richiesta utilizzando process.php?name=subroto
Quindi, in sostanza, invia informazioni tramite url. L'URL non può gestire più di 2036 caratteri. Quindi, per il post sul blog, ricordi che non è possibile?
POST : Post fa la stessa cosa di GET. Registrazione utente, Accesso utente, Invio big data, Blog Post. Se è necessario inviare informazioni sicure, utilizzare post o per i big data in quanto non passano attraverso l'URL.
AJAX : $.get()
e $.post()
contengono funzionalità che sono sottoinsiemi di $.ajax()
. Ha più configurazione.
$.get ()
metodo, che è una specie di scorciatoia per $.ajax()
. Quando si utilizza $.get ()
, invece di passare un oggetto, si passano gli argomenti. Come minimo, avrai bisogno dei primi due argomenti, che sono l'URL del file che vuoi recuperare (es. Test.txt) e un callback riuscito.
Tutti hanno spiegato l'argomento molto bene. C'è un altro punto che vorrei aggiungere sul metodo .load ().
Come da Carica documento se aggiungi un selettore con suffisso nell'URL dei dati, non eseguirà gli script nel caricamento del contenuto.
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html #content");
})
D'altra parte, dopo aver rimosso il selettore nell'URL, verranno eseguiti gli script nel nuovo contenuto. Prova questo esempio
dopo aver rimosso #content nell'URL nel file index.html
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html");
})
Non esiste una funzionalità integrata di questo tipo fornita da altri metodi in discussione.