2017-08-15 26 views
0

嗨,我使用一個AJAX功能7 API同步調用,這樣我想這個代碼:如何獲取JavaScript變量在AJAX調用的Laravel路由名稱

<a href="javascript:void(0)" class="sync-commands" data-name="order-sync" >Shopify Order Sync</a> 
<a href="javascript:void(0)" class="sync-commands" data-name="shopify.order.sync">Shopify Product</a> 

,並在Ajax調用,我用這代碼:

$('.sync-commands').on('click', function (e) { 
    e.preventDefault(); 
    var route_name =$(this).attr("data-name"); 

    $.ajax({ 
     url: "{{route(route_name)}}", //error line here no route/undefine variable etc 

如何在我的URL中訪問此變量? 我只想給不同的路線只打一個10個電話的ajax電話。 我該怎麼做?

回答

3

我猜ajax調用是在JS文件中,而不是在刀片模板底部的腳本標記中。所以從這個,也許這將是更容易使用route輔助函數在刀片模板:

<a href="javascript:void(0)" class="sync-commands" data-name="{{route('order-sync')}}">Shopify Order Sync</a> 

<a href="javascript:void(0)" class="sync-commands" data-name="{{route('shopify.order.sync')}}">Shopify Product</a> 

這則呈現爲完整的路線,那麼你的JS事件將有輕微的變化工作:

$('.sync-commands').on('click', function (e) { 
    e.preventDefault(); 
    var route_name =$(this).attr("data-name"); 
    $.ajax({ 
     url: route_name, 
+0

多數民衆贊成也AWSOM。 –

2

通過使用固定標籤的自然解決方法並在您的js文件中使用preventDefault(),無需使用數據標籤即可實現此功能。

<a href="{{route('order-sync')}}" class="sync-commands" >Shopify Order Sync</a> 
<a href="{{route('shopify.order.sync')}}" class="sync-commands">Shopify Product</a> 

JS

$('.sync-commands').on('click', function (e) { 
    e.preventDefault(); 
    var href = $(this).attr("href"); 
    $.ajax({ 
     url: href, 
+0

好吧,那太好了。 它會重新加載頁面或不是在你的情況? –

+0

@MuhammadAmirShahzad它不會刷新頁面。如果你有這個,'preventDefault()'事件的默認動作不會被觸發。你可以從這裏查看jquery文檔https://api.jquery.com/event.preventdefault/ – boang3000

+0

好的謝謝你,你做得很好。 –