【问题标题】:How to get JavaScript variable in AJAX call as Laravel route name如何在 AJAX 调用中获取 JavaScript 变量作为 Laravel 路由名称
【发布时间】: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 调用。 我该怎么做?

【问题讨论】:

    标签: php jquery ajax laravel routes


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2019-11-14
    • 2018-04-04
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 2016-06-15
    • 2021-08-13
    • 2015-11-26
    相关资源
    最近更新 更多