javascript - por - pasar parametros get jquery
¿Cómo puedo pasar parámetros a un método de devolución de llamada jQuery $.getJSON? (5)
Deformación en una función, por ejemplo,
function getResults(locationType) {
$.getJSON(url, null, function(results) {
searchResults(results, locationType)
});
}
Pero en su situación específica, ni siquiera tiene que pasarla, puede acceder al valor directamente en la devolución de llamada.
Estoy tratando de usar jQuery para llamar a alguna API personalizada a través de Ajax/$.getJSON
.
Estoy tratando de pasar un valor personalizado al método de devolución de llamada Ajax, pero ese valor no se pasa y en realidad se sobrescribe. Este es mi código:
var locationType = 3;
var url = ''blah blah blah'' + ''&locationType='' + locationType;
$("#loading_status").show();
$.getJSON(url, null, function(results, locationType) {
searchResults(results, locationType)
});
El valor de locationType
ANTES de que llame a la URL usando AJAX es 3
. Pero después de que la llamada devuelve los datos con éxito, el valor para locationType
ahora es success
. Esto se debe a que la firma del método de la devolución de llamada es:
devolución de llamada (datos, estado de texto) Una función de devolución de llamada que se ejecuta si la solicitud se realiza correctamente.
¿Cómo puedo pasar 1 o más parámetros a un método de devolución de llamada?
No necesita pasarlo, solo haga referencia a la variable que ya tiene, como esto:
var locationType = 3;
var url = ''blah blah blah'' + ''&locationType='' + locationType;
$("#loading_status").show();
$.getJSON(url, null, function(results) {
searchResults(results, locationType)
});
Además, no hay necesidad de pasar null
si no tiene un objeto de datos, es un parámetro opcional y jQuery comprueba si el segundo parámetro es una función o no, por lo que puede hacer esto:
$.getJSON(url, function(results) {
searchResults(results, locationType)
});
Podría intentar:
function getResults(locationType) {
$.getJSON(url, {p1:''xxx'', p2: ''yyy''}, function(results) {
searchResults(results, locationType)
});
}
Podrías usar el método .ajax :
var locationType = 3;
var url = ''blah blah blah'' + ''&locationType='' + locationType;
$.ajax({
url: url,
context: { lt: locationType },
success: function(results) {
searchResults(results, this.lt);
}
});
Si desea usar locationType
(cuyo valor es 3
) en la devolución de llamada, simplemente use
function(results) { .....
Gracias a los closures , locationType
estará disponible automáticamente en la devolución de llamada.