2016-02-01 57 views
0

我想讓我的網站使用來自另一個文件的Ajax,但它永遠不會運行,除非代碼實際上在視圖中。Laravel網站不在外部JavaScript文件中使用Ajax

該網站成功地調用了我的其他Javascript文件,但似乎無法識別其中包含Ajax的文件。

以下是在它與阿賈克斯我的外部JavaScript文件(ajax.js):

$(document).ready(function(){ 

    $("#idForm").submit(function(e) { 
     $.ajax({ 
      type: "POST", 
      url: "{{ url('/auth/login') }}", 
      data: $("#idForm").serialize(), 
      success: function(data) 
      { 
       location.reload(); 
      } 
     }); 

     e.preventDefault(); // avoid to execute the actual submit of the form. 
    }); 

}); 

而下面是成功地使用form.js文件,但不是我的阿賈克斯總體佈局文件。 js。

<html> 
<body> 

<!--Other Stuff--> 

<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
<script type="text/javascript" src="http://localhost/sitename/public/js/forms.js"></script> 
<script type="text/javascript" src="http://localhost/sitename/public/js/ajax.js"></script> 

</body> 
</html> 

任何想法?

+0

你可以試試e.stopImmediatePropagation();只是一個快速的猜測。 –

+0

刀片模板不會在js文件擴展名上啓動,而只會在.blade上啓動。您必須手動設置url – jayadevkv

回答

0

默認情況下,外部js文件不支持刀片語法。因此,從外部的js文件發送Ajax請求需要做到如下:

  1. 創建一個全局變量來UR template.blade.php文件,如下所示:

    VAR SITE_URL =「{{網址::至('/')}}」;
  2. 然後何時發送AJAX請求做:

    $就({ URL:SITE_URL + '/ ROUTE_NAME' });

相關問題