代码之家  ›  专栏  ›  技术社区  ›  FK82

为什么jQuery.ajax()要向url添加一个参数?

  •  14
  • FK82  · 技术社区  · 16 年前

    我有一个数据获取方法 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 */}
        } ,                                                                                                                                                         
    

    ?_=1272708280072 )如果文件名中的转义符(十六进制表示法)或未转义的utf-8字符超出ASCII范围(我相信是),则返回url。如果文件名中不包含该范围内的字符,那么这一切都可以正常工作。

    xml 所以不应该混淆类型。xml文件的头也被适当地设置。

    我可以从控制台看到jQuery抛出了一个错误,但是我不确定问题到底出在哪里。

    谢谢你的帮助!

    2 回复  |  直到 16 年前
        1
  •  22
  •   Sky Sanders    16 年前

    这是一个'缓存buster',并被忽略。

    如果Url没有被修改,那么数据很可能来自您和资源之间的任何一个缓存,包括您的浏览器、任何代理,也许还有服务器本身。

    你可以在网上找到很多解释。这里是 one .

        2
  •  1
  •   Bill the Lizard    15 年前

    javascript_include_tag 但是将JavaScript作为

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

    它不会启用缓存buster,这样你就可以知道你的问题是否在你认为的地方。