使用laravel中的ajax从按钮上单击文件夹中删除图像

问题描述:

I am trying to delete image from folder using ajax and in route using delete method .In controller trying to delete image using image name in laravel.

Route:

Route::delete('remove-social/{filename}', 'Webadmin\Socials@removesocial');

Controller:

 public function removesocial($filename){
          File::delete('public/assets/uploads/Social/' . $filename);
   }

View :

 <a href="javascript:removesocialimage()" style="color: white;text-decoration: none;" class="btn btn-red">
                                <i class="glyphicon glyphicon-trash "></i> Remove</a>   </label>
    <script>
         function removesocialimage() {
                if (j('#file_name').val() != '')
                    if (confirm('Are you sure want to remove social icon?')) {
                        j('#loading').css('display', 'block');
                        var form_data = new FormData();
                        form_data.append('_method', 'DELETE');
                        form_data.append('_token', '{{csrf_token()}}');
                        j.ajax({
                            url: "remove-social/" + j('#file_name').val(),
                            data: form_data,
                            type: 'POST',
                            contentType: false,
                            processData: false,
                            success: function (data) {
                              j('#preview_image').attr('src', '{{URL::to('/public/assets/Webadmin/images/attach-1.png')}}');
                                j('#file_name').val('');
                                j('#loading').css('display', 'none');
                            },
                            error: function (xhr, status, error) {
                                alert(error);
                                alert(xhr.responseText);
                            }
                        });
                    }
            }
        </script>    

Include this in your views head:

<meta name="csrf-token" content="{{ csrf_token() }}">

And do this ajax setup before making network calls:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

try to change route delete to post method

Route::post('remove-social/{filename}', 'Webadmin\Socials@removesocial');

if you want to used delete method then your ajax look like

add in head html tag

<meta name="csrf-token" content="{{ csrf_token() }}">

js code

 j.ajax({
       url: "remove-social/" + j('#file_name').val(),
       data: form_data,
       headers: {
            X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
       },
       type: 'DELETE',   //POST TO DELETE
       contentType: false,
       processData: false,
       success: function (data) {
       j('#preview_image').attr('src', '{{URL::to('/public/assets/Webadmin/images/attach-1.png')}}');
       j('#file_name').val('');
       j('#loading').css('display', 'none');
      },
      error: function (xhr, status, error) {
         alert(error);
         alert(xhr.responseText);
       }

});