我有一个使用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 */}
} ,
我的问题是:jQuery以某种方式将一个参数(?_=1272708280072
)添加到url如果有转义(十六进制表示法)或未转义的utf-8字符在ASCII范围之外 - 我相信 - 在文件中名称。如果文件名不包含该范围内的字符,则一切正常。
类型设置为xml
,因此不应混淆类型。 xml文件的标题也已充分设置。
我可以从控制台看到jQuery会抛出错误,但我不确定问题究竟在哪里。
可能是文件名格式问题,但我没有在网上找到任何有关AJAX文件名规范的资源。有什么想法吗?
谢谢你的帮助!
答案 0 :(得分:21)
这是一个'缓存破坏者'而被忽略。
添加的参数会更改网址,以便绕过您和源之间的大多数缓存。
如果未修改Url,则可能会从您与资源之间的任何一个缓存(包括浏览器,任何代理以及服务器本身)提供数据。
你可以在网上找到很多解释。这是one。
答案 1 :(得分:1)
应该被忽略。
只是为了进行测试,如果您使用的是rails,请不要使用javascript_include_tag
,而是将JavaScript传递为
<script src="/path/for/the/script/script.js" type="text/javascript"></script>
它不会启用缓存破坏程序,您可以看到问题是否在您认为的位置。