Ajax-запрос на удаление изображения не работает в laravel

#ajax #laravel

#ajax #laravel

Вопрос:

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

вот мой ajax:

 $(document).ready(function() {
        document.getElementById('pro-image').addEventListener('change', readImage, false);
        $(".preview-images-zone").sortable();
        $(document).on('click', '.image-cancel', function() {
            let no = $(this).data('no');
            let idData = $(this).data('id');
            $(".preview-image.preview-show-"   no).remove();
            $.ajax({
                type: 'POST',
                url: '{{url("unit/API/simpan")}}',
                data: {
                    'id': idData
                },
                success: function(data) {
                    alert('success');
                }
            });
        });

    });
  

Мой Html:

 <!-- Percobaan Preview -->
                        <fieldset class="form-group">
                            <div class="offset-md-2 col-md-6">
                                <a href="javascript:void(0)" onclick="$('#pro-image').click()" class="btn btn-primary">Upload Gambar</a>
                                <input type="file" id="pro-image" name="gambarku[]" style="display: none;" class="form-control" multiple>

                            </div>
                        </fieldset>
                        <div class="preview-images-zone offset-md-2 col-md-8">
                            <!-- Gambar Utama  -->
                            <div class="preview-image preview-show-1">
                                <div class="image-cancel" data-no="1">x</div>
                                <div class="image-zone"><img id="pro-img-1" src="{{asset('storage/rumah/'.$rumahku->gambar_rumah)}}"></div>

                            </div>
                            <!-- Gambar Tambahan -->
                            <?php $counter = 2 ?>
                            @foreach($rumahku->gambar as $rows)
                            <div class="preview-image preview-show-{{$counter}}">
                                <div class="image-cancel" data-no="{{$counter}}" data-id="{{$rows->id_gambar}}">x</div>
                                <div class="image-zone"><img id="pro-img-{{$counter}}" src="{{asset('storage/rumah/'.$rows->gambar_unit)}}"></div>
                            </div>
                            <?php $counter   ?>
                            @endforeach
                        </div>

                        <!-- /preview -->
  

мой маршрут

 Route::post('unit/API/simpan/{id}', 'partnerUnitController@simpanGambar');
  

мой контроллер

 public function simpanGambar($id)
{
    $gambar = Gambar::find($id);
    $gambar->delete();
}
  

Комментарии:

1. ваш url: '{{url("unit/API/simpan")}} here id отсутствует

2. Helo Kamlesh, спасибо за ответ на мое сообщение. идентификатор находится в данных: {‘id’: idData}

3. это так не работает

4. Вы определили свой маршрут с помощью идентификатора, требуемого в URL. Переданные данные — это нечто другое. Как сказал камлеш, попробуйте добавить идентификатор к URL. Кроме того, было бы хорошо, если бы вы прикрепили полученный ответ.

5. спасибо, у меня есть идентификатор переменной из let id = $(this).data(‘id’) , не могли бы вы сказать мне, как передать его в ajax

Ответ №1:

вы можете попробовать это

 Route::post('unit/API/simpan', 'partnerUnitController@simpanGambar');
  

и

 public function simpanGambar(Request $request)
{
    $gambar = Gambar::find($request->id);
    $gambar->delete();
}
  

или в ajax

  $.ajax({
     type: 'POST',
     url: '{{url("unit/API/simpan")}}'  '/'  id,  <---------- pass id here
  

Комментарии:

1. у меня есть идентификатор переменной из let id = $(this).data(‘id’), не могли бы вы сказать мне, как передать его в ajax

2. спасибо, Камлеш, это работает, когда я переключаюсь на метод get на маршруте и ajax. Но с методом POST это не работает.

3. Пожалуйста, добавьте отладочную информацию (ответ) на ваш вопрос.

4. @kamlesh Paul, я протестировал его с помощью postman, и этот результат равен 404 .я использовал этот URL: 127.0.0.1:8000/unit/API/simpan / 27

5. Kamlesh я попробовал ваш ответ и ввел этот URL-адрес в свой браузер 127.0.0.1: 8000 / unit / API / simpan, и результатом стало сообщение об ошибке «Метод GET не поддерживается для этого маршрута». Поддерживаемые методы: POST. Он должен быть перенаправлен на 404 точно так же, как я использую URL 127.0.0.1:8000 / unit / store (хранилище контроллера по умолчанию).