在Laravel和jquery中删除文件的问题

时间:2019-05-26 14:14:04

标签: javascript php jquery laravel laravel-5

我是Laravel和JQuery的初学者。

我有此代码:

<ul>
   <li class="file-id-46">- <a
      href="http://test.test/upload/other/1c186a1229c8c502c9bae2794b52a6f0.pdf"
      target="_blank">upload/other/1c186a1229c8c502c9bae2794b52a6f0.pdf</a>
      <a href="#" class="red removeThisFile"
         id="46">[delete file]</a>
   </li>
   <li class="file-id-47">- <a
      href="http://test.test/upload/other/65b13b47f09fc785d901e43e7864bab2.pdf"
      target="_blank">upload/other/65b13b47f09fc785d901e43e7864bab2.pdf</a>
      <a href="#" class="red removeThisFile"
         id="47">[delete file]</a>
   </li>
   <li class="file-id-48">- <a
      href="http://test.test/upload/other/19846324513791f79013fb8e5a7854d8.pdf"
      target="_blank">upload/other/19846324513791f79013fb8e5a7854d8.pdf</a>
      <a href="#" class="red removeThisFile"
         id="48">[delete file]</a>
   </li>
   <li class="file-id-49">- <a
      href="http://test.test/upload/other/fca69b7c02ae223cd167202368d3a555.pdf"
      target="_blank">upload/other/fca69b7c02ae223cd167202368d3a555.pdf</a>
      <a href="#" class="red removeThisFile"
         id="49">[delete file]</a>
   </li>
   <li class="file-id-50">- <a
      href="http://test.test/upload/other/2a1f88cd9f223a423a29594be3d8ce7a.pdf"
      target="_blank">upload/other/2a1f88cd9f223a423a29594be3d8ce7a.pdf</a>
      <a href="#" class="red removeThisFile"
         id="50">[delete file]</a>
   </li>
   <li class="file-id-51">- <a
      href="http://test.test/upload/other/dbe585a9716bd417437be6b0d5695a6a.pdf"
      target="_blank">upload/other/dbe585a9716bd417437be6b0d5695a6a.pdf</a>
      <a href="#" class="red removeThisFile"
         id="51">[delete file]</a>
   </li>
   <li class="file-id-52">- <a
      href="http://test.test/upload/other/585b8aa2cfd6a871eb3ed0e1c6d5e2b9.pdf"
      target="_blank">upload/other/585b8aa2cfd6a871eb3ed0e1c6d5e2b9.pdf</a>
      <a href="#" class="red removeThisFile"
         id="52">[delete file]</a>
   </li>
</ul>


$(".removeThisFile").click(function () {
                    var id = $(this).attr("id");
                    $('.file-id-' + id).hide();
                    $.ajax({
                        url: 'http://test.test/psCMS/removeOtherFile?id=52',
                        type: 'get',
                        dataType: 'json',
                        _token: $('meta[name="_token"]').attr('content'),
                        headers: {
                            'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
                        },
                        cache: false,
                        success: function (response) {
                            $(this).hide();
                        }
                    });

通常,jquery正确地将查询发送到php(Laravel)。 在删除文件时出现问题。第一个文件已正确删除。下一个文件不能被睡眠。 我怀疑删除先前的文件后,我的X-CSRF-TOKEN令牌无效。

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

在js代码中:

$(".removeThisFile").click(function () {
    var id = $(this).attr("id");
    $('.file-id-' + id).hide();
    $.ajax({
        url: 'http://test.test/psCMS/removeOtherFile/'+id,
        type: 'get',
        dataType: 'json',
        cache: false,
        success: function (response) {
            $(this).hide();
        }
    });
});

在路由文件(web.php)中:

Route::get('/psCMS/removeOtherFile/{id}', 'YourController@removeOtherFile');

在控制器中:

public function removeOtherFile($id){

    $my_id = $id;
    // here is your id 
}

答案 1 :(得分:0)

您可能会遇到一些x-csrf问题,因为这看起来不像我过去所看到的(尽管可能很好用)。使用表格顶部的@csrf,并在ajax设置方法中调用常规标头,可能会更好。

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

但是,直接回答您的问题,我认为问题要容易得多-我认为这是一个错字。您已经对ID进行了硬编码。尝试更改此行:

url: 'http://test.test/psCMS/removeOtherFile?id=52',

收件人:

url: 'http://test.test/psCMS/removeOtherFile?id='+id, // <--- note the variable