2010-03-03 29 views
8

Qual è la differenza tra queste due chiamate AJAX e perché dovrei scegliere di utilizzare quando si utilizza il framework asp.net mvc?Differenza tra jquery.post e jquery.get?

+0

La differenza è uguale alla differenza tra i metodi POST e GET in ASP.NET. Nella tua domanda hai incluso il tag asp.net-mvc, quindi presumo che tu abbia qualche esperienza con esso. –

risposta

10

Uno usa POST e uno utilizza GET.

Per quanto riguarda il loro scopo, l'unica vera differenza tecnica (correggere questo post se ho torto) è che GET ha un limite molto più breve alla stringa di query. In pratica, GET è pensato per recuperare qualcosa dal server. Una chiamata GET non dovrebbe causare effetti collaterali sul server. POST è quando intendi inviare qualcosa sul server e farlo fare qualcosa con esso.

modifica: la parola che stavo cercando, per descrivere GET, è idempotente. Dovresti essere in grado di fare la stessa chiamata GET un numero illimitato di volte, e ottenere lo stesso risultato ogni volta, senza conseguenze per il server (a patto ovviamente che nessun altro abbia modificato lo stato del server.) Ma ricorda che lì non esistono ostacoli tecnici che ti impediscano di utilizzare in modo errato GET o POST.

+1

Un Get può causare effetti collaterali, dovrebbe essere solo idempotente. Vedi http://en.wikipedia.org/wiki/Idempotent#In_computing. (Non causare effetti collaterali è 1 modo di essere idempotente, ma non l'unico modo). –

+1

Grazie! "Idempotent" era esattamente la parola che stavo cercando mentre lo scrivevo, non riuscivo proprio a ricordarlo. – Tesserex

1

get è una chiamata HTTP GET e post è un POST HTTP.

Vedere Wikipedia per more explanation.

In sostanza, se si includono dati (ad esempio con l'invio di un modulo), utilizzare post; in caso contrario, se si sta caricando una pagina o si desidera passare query string parameters, utilizzare get. (Tutti i dati si passa alla get verrà passato come stringa di query)

edit:

Sono separati perché l'oggetto XMLHttpRequest sottostante (l'oggetto fondamentale AJAX nei browser) richiede specifying a method. In realtà, anche inferiore a quello, quando richiedi una pagina web devi HTTP/1.0 GET o HTTP/1.0 POST (o gli altri metodi di richiesta). Se parli dal punto di vista del design, in alternativa al passaggio di una stringa in una sorta di metodo "carico", non posso dire cosa pensassero gli architetti del software che stavano dietro a jQuery.

EDIT2:

In realtà se si guarda la documentazione più recente jQuery, get e post sono elencati nella sezione "Metodi stenografia" e ai metodi equivalenti sono dati. Quindi, sono solo per abbreviare il codice e sono anche il metodo ajax.

+0

So come funzionano quelli normali ma in termini di Jquery, non capisco perché sono separati. –

4

$.post e $.get sono solo wrappers per $.ajax a rispettivi valori per il parametro type. (Righe 4888 e 4913 nel numero source.)

In MVC, è possibile specificare che un'azione del controllore accetti solo richieste effettuate utilizzando un determinato tipo di richiesta HTTP (utilizzando l'attributo AcceptVerbs controller/azione).

Se stavate inviando una richiesta a una tale azione, si avrebbe bisogno di specificare il tipo di richiesta, nel qual caso si potrebbe trovare $.post o $.get una comoda scorciatoia per $.ajax.

3

Quello che ho ottenuto è che le chiamate $ .get sono memorizzate nella cache da IE, che è un problema dato che di solito si sta utilizzando Ajax per aggiornare i dati. Se si desidera utilizzare GET ma non si desidera essere memorizzati nella cache, è necessario scorrere fino a $.ajax e passare la cache: false nelle impostazioni.

0

Si dovrebbe sempre usare il POST quando si inseriscono i set di modifiche: ci sono implicazioni per la sicurezza, lascerò tutti i dettagli di questo nella ricerca.

+1

Hory, una parola nuova, forse un baule derivato da canuto e cruento. – MrBoJangles

0
**GET** - Requests data from a specified resource 
**POST** - Submits data to be processed to a specified resource 

GET è fondamentalmente utilizzato per ottenere giusto (recupero) alcuni dati dal server. Nota: il metodo GET può restituire dati memorizzati nella cache.

POST può anche essere utilizzato per ottenere alcuni dati dal server. Tuttavia, il metodo POST non memorizza MAI dati e viene spesso utilizzato per inviare dati insieme alla richiesta.