簡體   English   中英

如何使用在主體部分而不是頭部部分中加載的jQuery進行ajax調用

[英]how to make an ajax call with jquery loaded in the body section not head section

我有一個布局文件,其中在關閉標簽之前就包含了Jquery。

//layout.handlebars
<!DOCTYPE html>
<html>
  <head></head>
   <body>
    {{{body}}} // renders the body content
    <script src='/js/jquery-2.2.4.min.js'></script>    
   </body>
</html>

我也有特定於頁面的javascript(helper.js),它可以進行Ajax調用。

<div>Some sample data</div>
<script src="/js/helper.js"></script>

但是這里的問題是在頁面末尾加載了jquery,但是我在加載jquery之前在外部javascript中引用了它。 這表明我沒有定義“ $”,我知道這是顯而易見的。

一種解決方案就像將jquery添加到頭部,但這不是我想要的。

有沒有什么方法可以應用在不將Jquery移至頭部的情況下從外部文件進行ajax調用。

任何幫助深表感謝!!

有沒有什么方法可以應用在不將Jquery移至頭部的情況下從外部文件進行ajax調用。

是的,我想您已經了解問題的原因。 正如您在下面看到的,最終內容是..

<!DOCTYPE html>
<html>
  <head></head>
   <body>
    <div>Some sample data</div>
    <script src="/js/helper.js"></script>  <!--Jquery is not loaded yet, and hence $ is undefined -->
    <script src='/js/jquery-2.2.4.min.js'></script>    
   </body>
</html>

如您所知,一個選擇是將jquery移動到HTML中的任何位置,但要確保先加載jquery,然后再加載其他依賴於jquery的文件。 現在,既然您不想采用此選項。 我們還有另一種選擇。

解決方案:我們的唯一目的是確保先加載jquery庫,然后再加載其他依賴於jquery的文件。

我們可以使用$ .getScript()獲取document.ready上的document.ready

$(function(){
 $.getScript( "/js/helper.js", function( data, textStatus, jqxhr ) {      
  console.log( "Load was performed." );
 });
});

附加功能:如果您覺得這很麻煩,並且不能將此代碼添加到頁面中的所有文件中(因為可能有太多文件),則可以編寫泛型函數和全局數組變量,此函數將檢查文件數組中的所有路徑,並同步執行每個數組,然后從數組中刪除。 確保在每個document.ready事件中都調用此泛型函數。

一種解決方案是,您可以將jquery腳本放在{{{body}}}部分之前的body標簽的開頭。.這樣,您的助手腳本將在jquery之后呈現,並且您的問題將得到解決......

好吧,它不是很漂亮,但是您可以使用某種測試並等待循環,例如

<script>
(function test(){
  if(  window.jQuery ){
    //your jQuery code
  } else {
    setTimeout(function(){ test(); }, 200);
  }
})
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM