Почему делает 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, если там оставлены (шестнадцатеричная нотация) или незавершенные utf-8 символы за пределами диапазона ASCII - я верю - в имя файла. Все это работает хорошо, если имя файла не содержит символы в том диапазоне.

Тип установлен на xml таким образом, не должно быть беспорядка типов. Заголовки XML-файлов также установлены соответственно.

Я вижу от консоли, что jQuery бросает ошибку, но я не уверен как, туда, где проблема действительно.

Вероятно, проблема с форматированием имени файла, но я не нашел ресурсов в сети относительно спецификаций имени файла Ajax. Какие-либо идеи?

Спасибо за Вас справка!

14
задан FK82 1 May 2010 в 10:23
поделиться

2 ответа

Это "кеш-бастер" и игнорируется.

Добавленный параметр изменяет URL-адрес ровно настолько, чтобы обойти большинство кэшей, которые находятся между вами и источником.

Если URL-адрес не был изменен, вполне вероятно, что данные будут обслуживаться из любого из кэшей между вами и ресурсом, включая ваш браузер, любые прокси-серверы и, возможно, сам сервер.

Вы можете найти много объяснений в сети.Вот один.

21
ответ дан 1 December 2019 в 12:38
поделиться

его следует игнорировать.

Просто чтобы провести тест, если вы используете рельсы, не используйте javascript_include_tag , а передайте JavaScript как

<script src="/path/for/the/script/script.js" type="text/javascript"></script> 

Он не включит блокировку кеша, и с его помощью вы сможете увидеть, заключается ли ваша проблема там, где вы думаете.

1
ответ дан 1 December 2019 в 12:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: