我尝试使用DELETE方法从数据库中删除行,并在Laravel 5.2项目中使用AJAX。一切正常,图片从服务器中删除,行从数据库中删除但删除后重定向到JSON响应。
我的控制者的行动:
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和stackoverflow),但没有任何效果。
如何解决这个问题?
答案 0 :(得分:1)
为您的提交事件添加阻止默认值。该页面正在重定向,因为您正在启动提交事件。
e.preventDefault();
将提交事件更改为:
$("#form-submit-button").click(function(e){
});
答案 1 :(得分: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以防止网页重定向
答案 2 :(得分:0)
从控制台检查javascript代码是否存在错误以使用e.preventDefault