2016-06-19 56 views
1

我想用DELETE方法從數據庫中刪除行,並在我的Laravel 5.2項目中使用AJAX。一切正常,圖片從服務器上刪除,行從數據庫中刪除,但刪除後重定向到JSON響應。即使阻止了Ajax DELETE重定向

我的控制器的動作:

public function deletePhoto(Photo $photo) 
{ 
    if ($photo->delete()) { 
     unlink('files/' . $photo->filename); 
     unlink('files/thumbs/' . $photo->filename); 

     return response()->json(['result' => 0]); 
    } 

    return response()->json(['result' => 1]); 
} 

它同時添加照片(它增加了,但不重定向)以這種方式工作。

這裏是我的Ajax代碼:

$('#deleteForm').submit(function(e) { 
     var currentElement = $(this); 
     var formUrl = $(this).attr('action'); 

     $.ajax({ 
      type: 'POST', 
      url: formUrl, 
      data: {_method: 'delete', _token: '{{ csrf_token() }}'}, 
      success: function(data) { 
       if (data.result == 0) { 
        currentElement.parent().fadeOut(400, function() { 
         $(this).remove(); 
        }); 
       } else { 
        alert('Wystąpił błąd podczas usuwania zdjęcia! Proszę spróbować ponownie!'); 
       } 

      } 
     }); 

     return false; 
    }); 

我試圖用許多方法改變(從laracast和計算器),令牌和數據,但毫無效果。

我該如何解決這個問題?

+0

我也有'dataType:'json''和緩存,contentType,processData設置爲false但沒有任何工作。 –

+0

它是什麼意思,它重定向到JSON響應?請求發出後,頁面正在重定向? – Frisbetarian

+0

確切地說,它應該停留在刪除頁面,但是它會使用JSON結果重定向到空白頁面。 –

回答

1

將防止默認添加到您的提交事件中。該頁面正在重定向,因爲您正在啓動提交事件。

e.preventDefault(); 

更改提交事件:

$("#form-submit-button").click(function(e){ 

}); 
+0

'e.preventDefault();'也不起作用。 –

+0

它仍然重定向嗎? – Frisbetarian

+0

不幸的是,是的。 –

0

試試這個:

$('#deleteForm').submit(function(e) { 
    e.preventDefault() 
    var currentElement = $(this); 
    var formUrl = $(this).attr('action'); 

    $.ajax({ 
     type: 'POST', 
     url: formUrl, 
     data: {_method: 'delete', _token: '{{ csrf_token() }}'}, 
     success: function(data) { 
      if (data.result == 0) { 
       currentElement.parent().fadeOut(400, function() { 
        $(this).remove(); 
       }); 
      } else { 
       alert('Wystąpił błąd podczas usuwania zdjęcia! Proszę spróbować ponownie!'); 
      } 

     } 
    }); 

    return false; 
}); 

你需要添加preventDefault防止頁面從控制檯重定向

+0

謝謝你的回答,但上面的是一樣的:)不幸的是,它不適合我:/ –

0

檢查是否存在JavaScript代碼中的錯誤,以工作e.preventDefault

+0

我總是檢查控制檯,但感謝您的幫助:) @Frisbetarian答案(在評論中)工作。 –