如何在 AJAX 调用中获取 JavaScript 变量作为 Laravel 路由名称
Posted
技术标签:
【中文标题】如何在 AJAX 调用中获取 JavaScript 变量作为 Laravel 路由名称【英文标题】:How to get JavaScript variable in AJAX call as Laravel route name 【发布时间】:2018-01-23 13:07:35 【问题描述】:您好,我正在使用一个 AJAX 函数进行 7 个 API 同步调用,因此我尝试了以下代码:
<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 调用。 我该怎么做?
【问题讨论】:
【参考方案1】:我猜测 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,
【讨论】:
这也太棒了。【参考方案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,
【讨论】:
好的,太好了。它会在您的情况下重新加载页面吗? @MuhammadAmirShahzad 它不会刷新页面。preventDefault()
如果您有此事件,则不会触发该事件的默认操作。您可以在此处从 jquery 文档中检查它api.jquery.com/event.preventdefault以上是关于如何在 AJAX 调用中获取 JavaScript 变量作为 Laravel 路由名称的主要内容,如果未能解决你的问题,请参考以下文章
如何在前端的 Javascript Ajax API 调用中隐藏我的 JWT 令牌?