¿Cómo debería pasar valores de cadena de consulta en una solicitud jQuery Ajax? Actualmente los hago de la siguiente manera, pero estoy seguro de que hay una forma más limpia que no requiere que codifique manualmente.
$.ajax({
url: "ajax.aspx?ajaxid=4&UserID=" + UserID + "&EmailAddress=" + encodeURIComponent(EmailAddress),
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
He visto ejemplos en los que los parámetros de cadena de consulta se pasan como una matriz, pero estos ejemplos que he visto no usan el $.ajax()
modelo, sino que van directamente a $.get()
. Por ejemplo:
$.get("ajax.aspx", { UserID: UserID , EmailAddress: EmailAddress } );
Prefiero usar el formato $ .ajax () ya que es a lo que estoy acostumbrado (no hay una razón particularmente buena, solo una preferencia personal).
Editar 09/04/2013:
Después de que mi pregunta se cerró (como "Demasiado localizada") encontré una pregunta relacionada (idéntica), con 3 votos positivos no menos (Mi mal por no encontrarla en primer lugar):
Usando jquery para hacer una POST, ¿cómo suministrar adecuadamente el parámetro 'datos'?
Esto respondió a mi pregunta perfectamente, descubrí que hacerlo de esta manera es mucho más fácil de leer y no necesito usarlo manualmente encodeURIComponent()
en la URL o los valores de DATOS (que es lo que encontré poco claro en la respuesta de bipen). Esto se debe a que el data
valor se codifica automáticamente mediante $.param()
). En caso de que esto pueda ser útil para cualquier otra persona, este es el ejemplo que utilicé:
$.ajax({
url: "ajax.aspx?ajaxid=4",
data: {
"VarA": VarA,
"VarB": VarB,
"VarC": VarC
},
cache: false,
type: "POST",
success: function(response) {
},
error: function(xhr) {
}
});
fuente
Respuestas:
Utilice la opción de datos de ajax. Puede enviar objetos de datos al servidor por
data
opción en ajax y eltype
que define cómo lo está enviando (ya seaPOST
oGET
). El tipo predeterminado esGET
métodoPrueba esto
Y puede obtener los datos por (si está utilizando PHP)
En aspx, creo que es (podría estar equivocado)
fuente
encodeURIComponent
. jquery hará esto por ti.data:$.param({ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress})
, en lugar dedata: { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress }
Pon tus parámetros en la
data
parte de laajax
llamada. Ver los documentos . Al igual que:fuente
Aquí está la sintaxis usando jQuery
$.get
Entonces, en su caso, eso equivaldría a,
Nota
$.get
no le da la oportunidad de configurar un controlador de errores. Pero hay varias formas de hacerlo, ya sea usando $ .ajaxSetup () , $ .ajaxError () o encadenando un elemento.fail
a$.get
continuación.La razón para configurar el tipo de datos como 'jsonp' se debe a problemas de la misma política de origen del navegador, pero si realiza la solicitud en el mismo dominio donde está alojado su javascript, debería estar bien con el tipo de datos establecido en
json
.Si no desea utilizar jquery
$.get
, consulte los documentos para$.ajax
obtener más flexibilidad.fuente
Intenta agregar esto:
Depende de qué tipo de datos se espera, puede asignar
html, json, script, xml
fuente
ID
) antes de pasarla como parámetro? Tengo Q en SO, stackoverflow.com/questions/41192531/… . Progresé mucho más en esta Q, donde ahora llamo a un diálogo jquery y llamo ajax para recuperar datos de mysql. Me falta el enlace sobre cómo recuperar la ID única asociada con cada clic en el punto de datos . Aprecio si puedes ayudarme. GraciasLa propiedad de datos le permite enviar una cadena. En el código del lado del servidor, acéptelo como un nombre de argumento de cadena "myVar" y luego puede analizarlo.
fuente
stringify
? Laajax
implementación de jQuery se encarga de eso por usted.Tuve el mismo problema donde especifiqué
data
pero el navegador estaba enviando solicitudes a URL que terminaban con[Object object]
.Deberías haberte
processData
puesto atrue
.fuente
Puede usar el
$.ajax()
, y si no desea poner los parámetros directamente en la URL, use eldata:
. Que se adjunta a la URLFuente: http://api.jquery.com/jQuery.ajax/
fuente
El parámetro de datos del método ajax le permite enviar datos al lado del servidor. En el lado del servidor puede solicitar los datos. Vea el código
En el lado del servidor, recíbalo usando la variable $ _GET.
fuente