为什么jQuery.ajax()会在url中添加参数?

我有一个数据获取方法,它使用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中,如果存在转义(hex表示法)或未转义的ASCII字符范围内的utf-8字符 – 我相信 – 在文件名中。 如果文件名不包含该范围内的字符,则一切正常。

Type设置为xml因此不应混淆类型。 xml文件的标题也已充分设置。

我可以从控制台看到jQuery抛出错误,但我不确定问题究竟在哪里。

可能是文件名格式化的问题,但我没有在网上找到任何关于AJAX文件名规范的资源。 有任何想法吗?

谢谢你的帮助!

这是一个’缓存破坏者’并被忽略。

添加的参数更改了url,足以绕过您和源之间的大多数缓存。

如果未修改Url,则可能会从您与资源之间的任何一个缓存(包括浏览器,任何代理以及服务器本身)提供数据。

你可以在网上找到很多解释。 这是一个 。

它应该被忽略。

只是为了进行测试,如果您使用的是rails,请不要使用javascript_include_tag而是将JavaScript作为

  

它不会启用缓存破坏程序,您可以看到问题是否在您认为的位置。