javascript - por - obtener parametros url jquery
Cómo pasar parámetros en solicitudes GET con jQuery (8)
¿Cómo debería pasar los valores de cadena de consulta en una solicitud jQuery Ajax? Actualmente los hago de la siguiente manera, pero estoy seguro de que hay una manera 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 donde los parámetros de cadena de consulta se pasan como una matriz, pero estos ejemplos que he visto no usan el modelo $.ajax()
, 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 (sin una razón particularmente buena, solo una preferencia personal).
Editar 04/09/2013:
Después de que se cerró mi pregunta (como "Demasiado localizado") encontré una pregunta relacionada (idéntica), con 3 votaciones al alza sin importancia (Lo malo es que no la encontré en primer lugar):
Usando jquery para hacer una POST, ¿cómo suministrar correctamente el parámetro ''datos''?
Esto respondió mi pregunta perfectamente, encontré que hacerlo de esta manera es mucho más fácil de leer y no necesito usar 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 valor de los data
se codifica automáticamente a través de $.param()
). En caso de que esto pueda ser útil para cualquier otra persona, este es el ejemplo con el que fui:
$.ajax({
url: "ajax.aspx?ajaxid=4",
data: {
"VarA": VarA,
"VarB": VarB,
"VarC": VarC
},
cache: false,
type: "POST",
success: function(response) {
},
error: function(xhr) {
}
});
Aquí está la sintaxis usando jQuery $.get
$.get(url, data, successCallback, datatype)
Entonces en tu caso, eso equivaldría a,
var url = ''ajax.asp'';
var data = { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress };
var datatype = ''jsonp'';
function success(response) {
// do something here
}
$.get(''ajax.aspx'', data, success, datatype)
Tenga en cuenta que $.get
no le da la oportunidad de configurar un controlador de errores. Pero hay varias maneras de hacerlo, ya sea usando $.ajaxSetup() , $.ajaxError() o encadenando un .fail
en su $.get
como a continuación
$.get(url, data, success, datatype)
.fail(function(){
})
La razón para establecer el tipo de datos como ''jsonp'' se debe a problemas de política de origen del mismo navegador, pero si realiza la solicitud en el mismo dominio donde se aloja su javascript, debería estar bien con el tipo de datos establecido en json
.
Si no desea usar jquery $.get
, vea los documentos de $.ajax
que permiten más flexibilidad
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
var id=5;
$.ajax({
type: "get",
url: "url of server side script",
data:{id:id},
success: function(res){
console.log(res);
},
error:function(error)
{
console.log(error);
}
});
En el servidor, recíbelo usando la variable $ _GET.
$_GET[''id''];
Aquí puedes obtener un example .
Intenta agregar esto:
$.ajax({
url: "ajax.aspx",
type:''get'',
data: {ajaxid:4, UserID: UserID , EmailAddress: encodeURIComponent(EmailAddress)},
dataType: ''json'',
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
Depende de qué tipo de datos se espera, puede asignar html, json, script, xml
La propiedad de datos le permite enviar una cadena. En su código del lado del servidor, acéptelo como un nombre de argumento de cadena "myVar" y luego puede analizarlo.
$.ajax({
url: "ajax.aspx",
data: [myVar = {id: 4, email: ''emailaddress'', myArray: [1, 2, 3]}];
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
Pon tus params en la parte de data
de la llamada ajax
. Ver los documentos . Al igual que:
$.ajax({
url: "/TestPage.aspx",
data: {"first": "Manu","Last":"Sharma"},
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
Puede usar $.ajax()
, y si no quiere poner los parámetros directamente en la URL, use los data:
Eso se agrega a la URL
Tuve el mismo problema cuando especifiqué data
pero el navegador enviaba solicitudes a la URL que terminaba con [Object object]
.
Debería tener processData
establecido en true
.
processData: true, // You should comment this out if is false or set to true
Utilice la opción de datos de ajax. Puede enviar objeto de datos al servidor por opción de data
en ajax y el type
que define cómo lo está enviando (ya sea POST
o GET
). El tipo predeterminado es el método GET
Prueba esto
$.ajax({
url: "ajax.aspx",
type: "get", //send it through get method
data: {
ajaxid: 4,
UserID: UserID,
EmailAddress: EmailAddress
},
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
Y puedes obtener los datos por
$_GET[''ajaxid''] //gives 4
$_GET[''UserID''] //gives you the sent userid