J'essaie d'utiliser jQuery pour appeler une API personnalisée via Ajax/$.getJSON
.
J'essaie de transmettre une valeur personnalisée à la méthode de rappel Ajax, mais cette valeur n'est pas transmise et est en réalité remplacée. Ceci est mon code:
var locationType = 3;
var url = 'blah blah blah' + '&locationType=' + locationType;
$("#loading_status").show();
$.getJSON(url, null, function(results, locationType) {
searchResults(results, locationType)
});
La valeur de locationType
AVANT que j'appelle l'URL à l'aide de AJAX est 3
. Mais une fois que l'appel a renvoyé les données, la valeur de locationType
est maintenant success
. En effet, la signature de la méthode du callback est:
callback (data, textStatus) Un rappel fonction qui est exécutée si le demande réussit.
Comment puis-je passer 1 ou plusieurs paramètres à une méthode de rappel?
Vous n'avez pas besoin de le transmettre, il vous suffit de référencer la variable que vous avez déjà, comme ceci:
var locationType = 3;
var url = 'blah blah blah' + '&locationType=' + locationType;
$("#loading_status").show();
$.getJSON(url, null, function(results) {
searchResults(results, locationType)
});
De plus, il n'est pas nécessaire de passer null
si vous n'avez pas d'objet de données, il s'agit d'un paramètre facultatif et jQuery vérifie si le deuxième paramètre est une fonction ou non. Vous pouvez donc procéder comme suit:
$.getJSON(url, function(results) {
searchResults(results, locationType)
});
Warp dans une fonction, par exemple.
function getResults(locationType) {
$.getJSON(url, null, function(results) {
searchResults(results, locationType)
});
}
Mais dans votre situation spécifique, vous n'avez même pas à la transmettre, vous pouvez accéder à la valeur directement dans le rappel.
Vous pouvez utiliser la méthode .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 vous souhaitez utiliser locationType
(dont la valeur est 3
) dans le rappel, utilisez simplement
function(results) { .....
grâce à les fermetures , locationType
seront automatiquement disponibles dans le rappel.
Pourrait essayer:
function getResults(locationType) {
$.getJSON(url, {p1:'xxx', p2: 'yyy'}, function(results) {
searchResults(results, locationType)
});
}