2016-03-04 36 views
1

以下函数需要加载外部文件并区分简单GET和需要使用脚本dataType方法的文件。

function navegacion(dashboard, history, rtype) 
{ 
    var urlPath = dashboard; 
    if(rtype !== 'script') {rtype = 'GET';} else {rtype = 'script';} 
    $.ajax({ 
      type: rtype, 
      async:true, 
      url: "ajaxapi.php?dashboard="+ dashboard, 
      success: function(msg) { 
      $("#main-div").html(msg); 
      } 
    }); 
} 

被调用与以前的功能是使用下面的功能也加载外部文件中的第二个文件:

$.holdReady(true); 
//set hold 

function releaseHold() { 
    $.holdReady(false); 
    $('#table').DataTable(); 
} 
//callback to release hold 

$.getScript('./javascript/jquery.dataTables.min.js', releaseHold); 
//load script then release hold 

的问题是,一个参数被传递到像这样的网址: /javascript/jquery.dataTables.min.js?_=1457117615305

在每个负载的参数的变化,从而它正在成为不可能缓存文件。

我该如何解决这个问题?为什么会发生?

回答

1

$.getScript方法是调用$.ajax在其中一个这些选项的推移,一些默认的选项是设置cache: false,这将追加你在这里看到的缓存阻止参数的快捷方式。

要删除缓存解锁器,您需要直接拨打$.ajax

$.ajax({url: '/url/to/script.js', dataType: 'script', cache: true}) 

在这里看到的文档:http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings

+0

在这种特殊情况下我不得不补充:在要使用回拨“成功releaseHold” – ILS