我有一个数据获取方法,它使用jQuery.ajax()
来获取xml文件。
/* */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 */}
} ,
我的问题是:如果文件名中存在ASCII范围之外的转义(十六进制表示)或未转义的UTF-8字符,jQuery会在URL中添加一个参数(?_=1272708280072
)。如果文件名中不包含该范围内的字符,则一切正常。
类型被设置为xml
,因此不应该混淆类型。XML文件的头信息也已适当设置。
我可以从控制台看到jQuery抛出了一个错误,但我不确定问题真正所在。
可能是文件名格式的问题,但我没有找到有关AJAX文件名规范的任何资源。有什么想法吗?
谢谢您的帮助!
%20%20%20
。因此格式类似于filename_%20%20%20.xml
。问题似乎出在Tomcat上,因为它将%
字符替换为相应的十六进制编码%25
。因此,我需要一种特殊字符编码的解决方案,不会被Tomcat解析。我应该能够自己找到解决方法。感谢您的帮助! - FK82