ajax成功加载多个js文件 - javascript

ajax成功加载多个js文件 - javascript

问题描述:

所以现在我有这段代码。在AJAX成功动态加载我的JS文件。但我的观点是......有没有什么方法可以一次加载它们而不用一个一个地输入呢?通过手段像文件夹/ *。JS然后它会加载该文件夹内的所有JS文件。这是我的示例代码。ajax成功加载多个js文件 - javascript

JS

$(document).ready(function() { 
$(document).on("click", "a[rel=tab]", function(e) { 
    // e.preventDefault(); 
    $e = $(e); 
    pageurl = $(this).attr('href'); 
    $.ajax({ 
     url: pageurl + '?rel=tab', 
     success: function(data) { 

      var head = document.getElementsByTagName("head")[0]; 
      var jquery = document.createElement("script"); 
      jquery.type = "text/javascript"; 
      jquery.src = base_url + "/assets/bower_components/datatables.net/js/jquery.dataTables.min.js"; 
      head.appendChild(jquery); 

      var js = document.createElement("script"); 
      js.type = "text/javascript"; 
      js.src = base_url + "/assets/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"; 
      head.appendChild(js); 

      var jsn = document.createElement("script"); 
      jsn.type = "text/javascript"; 
      jsn.src = base_url + "/assets/js/newscript.js"; 
      head.appendChild(jsn); 
      jsn.onload = function() { 
       $('#inside').html(data); 
      } 
     } 
    }); 

    //to change the browser URL to 'pageurl' 
    if (pageurl != window.location) { 
     window.history.pushState({ path: pageurl }, '', pageurl); 
    } 
    return false; 
}); 

$(window).bind('popstate', function() { 
    $.ajax({ 
     url: location.pathname + '?rel=tab', 
     success: function(data) { 
      $('#inside').html(data); 
     } 
    }); 
}); 
}); 
+1

号每个分离的文件需要以加载它,或在脚本文件的情况下,以进行单独的HTTP请求,要定义一个单独的''

+0

被路由到一个脚本,也没有办法在服务器上的文件夹中枚举文件,基本上是相同的原因 – ADyson

+1

在一个侧面说明,因为你使用jQuery,你可以使用'.getScript(url,callback)' –

问题的答案here用下面的代码:

const getScripts = 
    resources => { 
    jQuery.when.apply(
     null 
     ,resources.map(
     resource => 
      $.getScript(base_url + resource) 
     ) 
    ) 
; 

getScripts(["url1","url2"]) 
.then(
() => console.log("finished loading scripts") 
    ,err => console.warn("Failed:",err) 
); 

我认为你需要重新考虑,虽然你的设计,重新加载大量的脚本。所有你需要的是通过xhr设置一些内容(不是使用xhr来请求html部分的大爱好者)并且用脚本初始化内容。

而不是重新加载所有的脚本,你应该调用一个函数来初始化内容。