J'utilise jsonp et ajax pour interroger un service web écrit en java sur un autre serveur. J'utilise la commande jquery suivante :
$.ajax({
type: "GET",
url: wsUrl,
data: {},
dataType: "jsonp",
complete: sites_return,
crossDomain: true,
jsonpCallback: "sites_return"
});
function jsonp_callback(data) {
console.log(data);
}
function sites_return(data) {
console.log(data);
}
Mon problème est qu'une fois la requête terminée, une fonction appelée jsonp_callback est appelée. Où je peux clairement voir la chaîne formatée en json :
{"listEntries":["ELEM1", "ELEM2", "ELEM3", etc...]}
Mais après l'appel de la fonction sites_return lorsque l'événement complet se déclenche, j'obtiens le résultat suivant :
Object { readyState=4, status=200, statusText="parsererror"}
De plus, pour référence, la fonction jsonp_callback est appelée avant la fonction sites_return. De plus, si je retire la fonction jsonp_callback du code, j'obtiens une plainte dans firebug indiquant que la fonction n'est pas implémentée.
Ma question est triple : 1) Qu'est-ce que je fais mal du côté de Jquery ? 2) Pourquoi le json est analysé correctement dans jsonp_callback mais pas dans sites_return ? 3) Que puis-je faire pour résoudre ces problèmes ?
EDIT
De nouveaux développements. Selon les commentaires, voici quelques informations supplémentaires.
Voici ce qui ressort de la réponse http
jsonp_callback({"listEntries":["ELEM1", "ELEM2", "ELEM3"]})
Je suppose que c'est la raison pour laquelle jsonp_callback est appelé. Je suppose que ma question est la suivante : y a-t-il un moyen de contrôler cela (en supposant que je n'ai pas accès au service web back-end) ?