J'ai une méthode de récupération de données qui utilise jQuery.ajax()
pour récupérer des fichiers XML.Pourquoi jQuery.ajax() ajoute un paramètre à l'URL?
/* */data: function() {
/* debug */try {
var url = arguments[0] ;
var type = arguments[1] ;
var scope = arguments[2] ;
var callback = arguments[3] ;
var self = this ;
if(this.cache[url]) {
callback(this.cache[url]) ;
} else if(!this.cache[url]) {
$.ajax({
type: "GET" ,
url: url ,
dataType: type ,
cache: false ,
success: function(data) {
if(type == "text/xml") {
var myJson = AUX.json ;
var jsonString = myJson.build(data,scope,null) ;
var jsonObject = $.parseJSON(jsonString) ;
self.cache[url] = jsonObject ;
callback(url) ;
} else if(type == "json") {
self.cache[url] = data ;
callback(url) ;
}
} ,
error: function() {
throw "Ajax call failed." ;
}
}) ;
}
/* debug */} catch(e) {
/* debug */ alert("- caller: signTutor.data\n- " + e) ;
/* debug */}
} ,
Mon problème est: jQuery ajoute en quelque sorte un paramètre (?_=1272708280072
) à l'url si on se sont échappés (notation hexadécimale) ou unescaped caractères UTF-8 en dehors de la plage ASCII - je crois - dans le fichier prénom. Tout fonctionne bien si le nom de fichier ne contient pas de caractères dans cette plage.
Le type est défini sur xml
, donc il ne devrait pas y avoir de confusion de types. Les en-têtes des fichiers xml sont également définis correctement.
Je peux voir à partir de la console que jQuery génère une erreur, mais je ne suis pas sûr de l'origine du problème.
Probablement un problème avec la mise en forme du nom de fichier, mais je n'ai trouvé aucune ressource sur le web quant aux spécifications du nom de fichier AJAX. Des idées?
Merci pour votre aide!
Ok, super. On dirait que ce n'était pas le problème, cependant. Mon appel ajax renvoie 404 - fichier introuvable s'il y a des caractères utf-8 dans le nom du fichier. Des idées là-dessus? – FK82
@ FK82- Bien qu'il existe des technologies émergentes capables de gérer les URLs UTF, http est traditionnellement ASCII, donc vous devez UrlEncode toute URL pouvant contenir des caractères UTF. b.t.w. '? _ = 1272708280072' est ascii donc ce n'est pas le problème. –
L'utf-8 dans le nom de fichier était déjà échappé par une servlet Java, qui prépare le fichier. Donc, il est déjà codé en hexcode comme '% 20% 20% 20' (juste un exemple). Le format est donc similaire à 'filename_% 20% 20% 20.xml'. Le problème semble être avec Tomcat, car il remplace le caractère '%' par '% 25' qui est le code hexadécimal correspondant. Donc, j'aurai besoin d'une solution pour encoder les caractères spéciaux, qui ne sera pas analysée par Tomcat. Je devrais être capable de comprendre ça moi-même. Merci de votre aide! – FK82