如何在 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 中调用存储过程?

如何从 laravel 中的 ajax 调用中获取值

如何在前端的 Javascript Ajax API 调用中隐藏我的 JWT 令牌?

如何在 JavaScript 中使用 JSONP 请求执行 Ajax 调用? [复制]

从 AJAX 调用中获取 JSON 对象

如何在 ajax 调用中提交表单之前调用 javascript 验证函数