2010-03-03 9 views
8

¿Cuál es la diferencia entre esas dos llamadas AJAX y por qué elegiré usarlas al usar el framework asp.net mvc?Diferencia entre jquery.post y jquery.get?

+0

La diferencia es la misma que la diferencia entre los métodos POST y GET en ASP.NET. Incluyó la etiqueta asp.net-mvc en su pregunta, así que supongo que tiene alguna experiencia con ella. –

Respuesta

10

Uno usa POST y otro usa GET.

En lo que respecta a lo que están destinados - la única diferencia técnica real (corrija esta publicación si me equivoco) es que GET tiene un límite mucho más corto para la cadena de consulta. En la práctica, GET está destinado a cuando se busca algo del servidor. Una llamada GET no debería causar efectos secundarios en el servidor. POST es cuando tiene la intención de enviar algo al servidor y hacer que haga algo con él.

editar: la palabra que estaba buscando, para describir GET, es idempotente. Debería poder hacer exactamente la misma llamada GET un número ilimitado de veces, y obtener el mismo resultado cada vez, sin consecuencias para el servidor (siempre y cuando por supuesto que nadie más haya cambiado el estado del servidor). Pero recuerde que hay no hay barreras técnicas que le impidan usar mal GET o POST.

+1

A Get puede causar efectos secundarios, solo debe ser idempotente. Ver http://en.wikipedia.org/wiki/Idempotent#In_computing. (No causar efectos secundarios es 1 forma de ser idempotente, pero no la única). –

+1

¡Gracias! "Idempotente" fue exactamente la palabra que estaba buscando mientras escribía eso, simplemente no podía recordarlo. – Tesserex

1

get es una llamada HTTP GET, y post es un HTTP POST.

Ver Wikipedia para more explanation.

Básicamente, si incluye datos (como con el envío de un formulario), use post; de lo contrario, si solo está cargando una página, o si desea pasar query string parameters, use get. (Todos los datos que pasan a get se pasa como cadena de consulta)

edición:

Están separados porque el objeto XMLHttpRequest subyacente (el objeto AJAX fundamental en los navegadores) requiere specifying a method. De hecho, incluso más bajo que eso, cuando solicita una página web, tiene HTTP/1.0 GET o HTTP/1.0 POST (u otros métodos de solicitud). Si está hablando desde un punto de vista de diseño, como alternativa a pasar una cadena a algún tipo de método de "carga", no puedo decir qué pensaban los arquitectos de software detrás de jQuery.

Edit2:

En realidad, si nos fijamos en la última documentación de jQuery, get y post se enumeran en "métodos abreviados" ya los métodos equivalentes se les da. Entonces, son solo para acortar su código y también para el método ajax.

+0

Sé cómo funcionan los normales, pero en términos de Jquery, no entiendo por qué están separados. –

4

$.post y $.get son solo envoltorios para $.ajax con los valores respectivos para el parámetro type. (Líneas 4888 y 4913 en source.)

En MVC, puede especificar que una acción del controlador solo acepte solicitudes realizadas utilizando un determinado tipo de solicitud HTTP (utilizando el atributo controlador/acción AcceptVerbs).

Si se le envía una solicitud a tal acción, lo que se necesita para especificar el tipo de solicitud, en cuyo caso es posible encontrar $.post o $.get un atajo útil para $.ajax.

3

El único problema con el que me he encontrado es que las llamadas $ .get están almacenadas en caché por IE, lo cual es un problema, dado que usualmente está usando Ajax para actualizar los datos. Si quiere usar GET pero no quiere que se lo guarde en la memoria caché, tiene que desplegarlo al $.ajax y pasar el caché: falso en la configuración.

0

Siempre debe usar POST al presionar conjuntos de cambios, existen implicaciones de seguridad, dejaré todos los detalles para investigar.

+1

Hory, una nueva palabra, tal vez un baúl de viaje derivado de canoso y sangriento. – MrBoJangles

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

GET se utiliza básicamente para obtener (recuperar) algunos datos del servidor. Nota: El método GET puede devolver datos en caché.

POST también se puede utilizar para obtener algunos datos del servidor. Sin embargo, el método POST NUNCA almacena en caché los datos, y a menudo se utiliza para enviar datos junto con la solicitud.