¿Cómo vincular la variable a la solicitud jquery ajax?
Frecuentes
Visto 5,606 veces
4
Esto se explica por sí mismo:
while (...) {
var string='something that changes for each ajax request.';
$.ajax({'type': 'GET','dataType': 'json', 'url': 'get_data.php'}).done(processData);
}
function processData(data) {
// get string into here somehow.
}
Como puedes ver, necesito conseguir string
dentro processData
de algun modo. No puedo hacer una variable global porque string
es diferente para cada solicitud de ajax. Entonces, la pregunta es, ¿cómo ato string
a mi solicitud de ajax para que pueda acceder a ella desde processData
?
Realmente no quiero tener que agregar string
a la consulta y hacer que el servidor la devuelva, pero si esta es mi única opción, no tengo elección.
Gracias de antemano.
3 Respuestas
6
intente de esta manera:
while (...) {
var str = 'something that changes for each ajax request.';
(function(_str) {
$.ajax({'type': 'GET','dataType': 'json', 'url': 'get_data.php'})
.done(function(data) {
processData(data, _str);
});
}(str));
}
function processData(data, str) {
console.log(data, str);
}
y no se usaron variables globales :)
contestado el 22 de mayo de 12 a las 17:05
2
var string='something that changes for each ajax request.';
// Use a closure to make sure the string value is the right one.
(function() {
// Store the "string" context
var that = this;
$.ajax({
'type': 'GET',
'dataType': 'json',
'url': 'get_data.php'
}).done(
$.proxy( processData, that )
);
}(string));
function processData( data ) {
this.string === 'something that changes for each ajax request.' // true
}
$.proxy
es la versión jQuery (navegador cruzado) de .bind()
.
Podría agregar un argumento como sugirió @Joel (en su respuesta eliminada), pero el menos argumentos mejor.
Respondido 12 Abr '17, 08:04
0
$(document).bind("ajaxSend",function(){
$("#ajax_preloader").show();
}).bind("ajaxComplete",function(){
$("#ajax_preloader").hide();
});
contestado el 17 de mayo de 16 a las 21:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript jquery ajax data-binding jquery-deferred or haz tu propia pregunta.
solo un pensamiento: si
string
es un valor que está cambiando dentro delwhile
, ¿cómo puede estar seguro de pasar el derechostring
valor paraprocessData
función (y no la última)? - Fabricio CalderanHm, supongo que usar un cierre para asegurarse de que esta sea la forma correcta. Editado, @F.Calderan. - florián margaine