Изменить статус с помощью Ajax в Laravel - PullRequest
2 голосов
/ 29 октября 2019

Я использую Laravel в своем проекте. У меня есть ваучер, который поддерживает статус. Я использовал AJAX для изменения статуса, и код AJAX работает успешно.

Однако, по моему мнению, статус не менялся, пока я не обновил страницу. Я ищу способ решить эту проблему.

<button class="btn btn-link p-0 change" type="submit" data-id="{{ $voucher->id }}">
  @if ($voucher->status == 1)
    <i class="fa fa-toggle-on text-success"></i>
  @else
    <i class="fa fa-toggle-off text-muted"></i>
  @endif
</button> 
@if ($voucher->status == 1)
  <span class="badge badge-soft-success">
    enable
  </span> 
@else
  <span class="badge badge-soft-pink">
    disbale
  </span> 
@endif
$(".change").click(function() {
  var id = $(this).data("id");
  $.ajax({
    url: "vouchers/change-status/" + id,
    type: 'put',
    dataType: "JSON",
    data: {
      "id": id,
      "_method": 'put',
      "_token": "{{ csrf_token() }}",
    },
    success: function() {
      console.log("it Work");
      // $("tr#"+id).remove();
    }
  });

  console.log("It failed");
});

Ответы [ 3 ]

2 голосов
/ 29 октября 2019

Вы можете попробовать это следующим образом:

Blade

Оберните свой код в каком-то держателе с классом status-enabled, когда статус 1. Установить специальные классы для элементов, которые будут видны или нет в соответствии со статусом.

<div class="holder @if($voucher->status == 1) status-enabled @endif">
    <button class="btn btn-link p-0 change" type="submit" data-id="{{ $voucher->id }}">
        <i class="fa fa-toggle-on text-success enabled-visible"></i>
        <i class="fa fa-toggle-off text-muted enabled-invisible"></i>
    </button>

    <span class="badge badge-soft-success enabled-visible">
        enable
    </span>

    <span class="badge badge-soft-pink enabled-invisible">
        disbale
    </span>
</div>

CSS

Установить правила:

    .holder .enabled-visible {
        display: none;
    }
    .holder .enabled-invisible {
        display: inline-block;
    }

    .holder.status-enabled .enabled-visible {
        display: inline-block;
    }
    .holder.status-enabled .enabled-invisible {
        display: none;
    }

JS

Переключение класса держателя при успешном изменении статуса.

$(".change").click(function() {
    var id = $(this).data("id");
    $.ajax({
        url: "vouchers/change-status/" + id,
        type: 'put',
        dataType: "JSON",
        data: {
            "id": id,
            "_method": 'put',
            "_token": "{{ csrf_token() }}",
        },
        success: function() {
            $(this).closest('.holder').toggleClass('status-enabled');
        }
    });

    console.log("It failed");
});
1 голос
/ 29 октября 2019

Просто в вашей функции успеха:

 success: function() {
      console.log("it Work");
      $("i.fa-toggle-on).hide();
      $("i.fa-toggle-off).show();
    }
0 голосов
/ 29 октября 2019

Html Tag не нужно, если условие php blade.

<button class="btn btn-link p-0 change" type="submit" data-id="{{ $voucher->id }}">
    @if ($voucher->status == 1)
        <i class="fa fa-toggle-on text-success"></i>
    @else
        <i class="fa fa-toggle-off text-muted"></i>
    @endif
</button>
<div id="alert-message"></div>  // add this line
@endrole

измените этот код в своем коде. файл сценария

$(".change").click(function() {
        var id = $(this).data("id");

        var success = '<span class="badge badge-soft-success">' +
            'enable' +
            '</span>';

        var failed = '<span class="badge badge-soft-pink">' +
            'disbale' +
            '</span>';
        $.ajax({
            url: "vouchers/change-status/" + id,
            type: 'put',
            dataType: "JSON",
            data: {
                "id": id,
                "_method": 'put',
                "_token": "{{ csrf_token() }}",
            },
            success: function() {
                console.log("it Work");
                $('#alert-message').html(success);
                // $("tr#"+id).remove();
            }
        });

        $('#alert-message').html(failed);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...