2016-07-27 223 views
-3

所以這裏是我的刪除按鈕Laravel AJAX刪除請求

<button class="btn btn-danger btn-xs btn-delete delete" value="{{$post->id}}">Delete</button> 

然後Ajax請求

<script type="text/javascript"> 

        $(document).ready(function(){ 
         $('.delete').click(function(){ 
          var id = $(this).val(); 
          alert(id); 
          $.ajax({ 
           type: "DELETE", 
           url: "{{route('delete_post')}}", 
           data: { id: 1 }, 
           success: function (data) { 
            console.log(data); 

            $("#task" + id).remove(); 
           }, 
           error: function (data) { 
            console.log('Error:', data); 
           } 
          }); 
         }); 
        }); 
       </script> 

路線

Route::get('delete_post','[email protected]'); 

則控制器:

public function getDeletePost($post_id) 
{ 
    $post = Post::where('id', $post_id)->first(); 

    $post->delete(); 
    return redirect()->route('dashboard')->with(['message' => 'Successfully deleted!']); 
} 

所以請幫助我identfy當我按下刪除鍵

+0

調試你的代碼,而不是傾銷代碼和尋求幫助。解釋它出錯的地方。你得到的錯誤是什麼。結果是什麼。預期的結果是什麼。你的'ajax'中有 – PeeHaa

+0

,你有''DELETE','但路由是'GET'請求。你應該改變類型爲'get'。大多數情況下,ajax查詢都是「get」或「post」請求,而其他任何事情都是在服務器端處理的。那麼你應該改變你的路線到'Route :: delete(' – Craicerjack

+0

嗨,所以我糾正了我的代碼,但我仍然得到這個錯誤:Error:Object {readyState:4,getResponseHeader:.ajax/v ...... – MuseMe

回答

1

你在你的Ajax調用發送DELETE請求類型,後者要求與添加到您的AJAX數據刪除值_method參數爲什麼沒有真的發生。您的路由是GET路由,所以您看不到任何操作

另一個問題是您的刀片語法引用了命名路由'delete_post',但這是您的URL,而不是路由名稱。您尚未從您發佈的路線中命名路線

嘗試在您的路線文件中更新此行,並且應該允許請求將其傳遞到您的控制器方法。

Route::post('delete_post','[email protected]')->name('delete_post'); 

現在,你有你的Ajax請求類型更改爲

type: "POST" 
+0

DELETE確實存在,並且是刪除對象時使用的完美有效方法 – rypskar

+0

是的,我將編輯以反映這一點,但Laravel中的Route :: delete路徑尋找隱藏的_method字段的值爲刪除,而不是試圖讓他在AJAX中爲他的數據添加另一個參數,這是我的建議,但是對於誤導性答案您的錯誤答案是錯誤的, –

1

我已經修改了你的JavaScript,在你的代碼第一個問題是,您必須使用get請求或POST請求,第二個問題你未使用名爲途徑爲了通話網址爲Ajax像{{ route() }},它應該是{{ url('path') }}或命名路線..

<script type="text/javascript"> 

       $(document).ready(function(){ 
        $('.delete').click(function(){ 
         var id = $(this).val(); 
         alert(id); 
         $.ajax({ 
          type: "get", 
          url: "{{ url('/') }}", 
          data: { id: 1 }, 
          success: function (data) { 
           console.log(data); 

           $("#task" + id).remove(); 
          }, 
          error: function (data) { 
           console.log('Error:', data); 
          } 
         }); 
        }); 
       }); 
      </script>