Как получить переменную JavaScript в вызове AJAX как имя маршрута Laravel

Привет, я использую одну функцию 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?
Я просто хочу вызвать только один вызов ajax из 10 вызовов для разных маршрутов.
Как я могу это сделать?

1

Решение

Я предполагаю, что вызов ajax находится внутри файла JS, а не в теге script в нижней части шаблона blade-сервера. Так что, возможно, было бы проще использовать 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,
3

Другие решения

Более чистый способ сделать это без использования тегов данных, используя естественный обходной путь тегов привязки и используя preventDefault() в вашем файле JS.

<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,
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector