我是Laravel新手,我使用此Jeffrey Way script提交DELETE
請求沒有窗體。刪除請求的形式之外Laravel
我的鏈接:
<a class="btn btn-danger btn-sm delete" href="files/<?=$file->id?>" data-method="delete">
<i class="fa fa-check"></i> Yes I'm sure
</a>
的腳本,它現在是在視圖文件如下:
$(document).on("click", ".delete", function() {
var laravel = {
initialize: function() {
this.methodLinks = $('a[data-method]');
this.registerEvents();
},
registerEvents: function() {
this.methodLinks.on('click', this.handleMethod);
},
handleMethod: function(e) {
var link = $(this);
var httpMethod = link.data('method').toUpperCase();
var form;
// If the data-method attribute is not PUT or DELETE,
// then we don't know what to do. Just ignore.
if ($.inArray(httpMethod, ['PUT', 'DELETE']) === - 1) {
return;
}
// Allow user to optionally provide data-confirm="Are you sure?"
if (link.data('confirm')) {
if (! laravel.verifyConfirm(link)) {
return false;
}
}
form = laravel.createForm(link);
form.submit();
e.preventDefault();
},
verifyConfirm: function(link) {
return confirm(link.data('confirm'));
},
createForm: function(link) {
var form =
$('<form>', {
'method': 'POST',
'action': link.attr('href')
});
var token =
$('<input>', {
'type': 'hidden',
'name': 'csrf_token',
'value': '<?=csrf_token();?>' // hmmmm...
});
var hiddenInput =
$('<input>', {
'name': '_method',
'type': 'hidden',
'value': link.data('method')
});
return form.append(token, hiddenInput)
.appendTo('body');
}
};
laravel.initialize();
});
這是從主旨,唯一的變化拉動的確切腳本我做的是我添加了觸發器$(document).on("click", ".delete", function()
。
我遇到的問題是,當我點擊要刪除的鏈接時,我會發送到另一個頁面(如/files/6
或任何文件ID)。它正在將<a>
標籤視爲正常鏈接,而不是DELETE
請求,因爲我希望發生這種情況。有誰知道爲什麼會發生這種情況?
感謝您的輸入,但不幸的是這不起作用,雖然它確實阻止了導航的發生,但沒有提交'DELETE'請求。從Gist上的評論看來,沒有人有任何問題,也許我錯過了一些明顯的東西。 – Dan 2014-09-05 23:14:08
@Dan嘗試做'$(function(){'而不是'$(document).on(「click」,「.delet e「,函數(){'因爲Jefferey的腳本已經將click事件綁定到該元素。 – 2014-09-05 23:20:26
我曾嘗試過,最初切換到其他方法。兩者都有同樣的結果。不過謝謝 – Dan 2014-09-05 23:23:31