Почему 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-адресу, если есть escape-код (шестнадцатеричная нотация) или unescaped символы utf-8 вне диапазона ASCII - я верю - в имя файла. Все работает хорошо, если имя файла не содержит символов в этом диапазоне.
Тип имеет значение xml
, поэтому не должно быть путаницы типов. Заголовки файлов xml также установлены надлежащим образом.
Я вижу на консоли, что jQuery выдает ошибку, но я не уверен, где проблема на самом деле.
Вероятно, проблема с форматированием имени файла, но я не нашел никаких ресурсов в Интернете в отношении спецификаций имени файла AJAX. Любые идеи?
Спасибо за помощь!
Ответы
Ответ 1
Это "кеш-бастер" и игнорируется.
Добавленный параметр изменяет URL-адрес достаточно, чтобы обойти большинство кэшей, которые находятся между вами и источником.
Если Url не был изменен, вероятно, данные будут обслуживаться из любого одного из кэшей между вами и ресурсом, включая ваш браузер, любые прокси и, возможно, сам сервер.
Вы можете найти много объяснений в сети. Вот один.
Ответ 2
его следует игнорировать.
Просто, чтобы выполнить тест, если вы используете рельсы, не используйте javascript_include_tag
, но передавайте JavaScript как
<script src="/path/for/the/script/script.js" type="text/javascript"></script>
Он не включит кеш-buster и с этим вы можете увидеть, есть ли ваша проблема, где вы думаете, что это.