当我在注释掉模式对话框脚本的情况下运行此代码时,我会看到弹出的控制器消息。当我尝试使用脚本时,会出现模态弹出窗口,但单击"确定"或"取消"不会起任何作用。我怀疑这与"attr(‘action’)"有关,但我找不到它的文档,也不确定如何将它路由到控制器。我尝试将"action"更改为"destroy"one_answers"delete",但没有成功。
<td> {{Form::open(array('method'=>'DELETE', 'route' => array('users.destroy', $user->id)))}}
{{Form::submit('Delete', array('class'=>'btn btn-danger'))}}
{{Form::close()}}
</td>
脚本
<script>
$(document).ready(function(){
$('.btn-danger').submit(function(e){
e.preventDefault();
url = $(this).parent().attr('action');
BootstrapDialog.confirm('Are you sure you want to delete?', function(result){
if(result) {
$.ajax(url);
}
});
});
});
</script>
控制器
public function destroy($id)
{
print_r($id);
// User::find($id)->delete();
// return View::make('hello');
Response::json(['message'=>'Delete was successful']);
}
在我的路线上我有
Route::resource('users', 'UserController');
运行php-artisan路由显示
URI: DELETE users/{users} | Name: users.destroy | Action: UserController@destroy
如下所示更改jquery行将继续处理控制器消息,但现在缺少模式确认。
url = $(this).parent().attr('action');
BootstrapDialog.confirm('Are you sure you want to delete?', function(result){
if(result) {
$.ajax({url:url,
type:"DELETE",
success: function(data, textStatus, jqXHR) {
alert(data.message + textStatus + jqXHR.responseText);},
error: function(jqXHR, textStatus, errorThrown) {
alert('Failure: ' + textStatus + ". Error: " + errorThrown);}
});
Routes.php文件是什么样子的?
确保您有Route::delete('users/{id}', ['uses' => 'UsersController@destroy', 'as'=>'users.destroy']);
其次,如果您使用ajax,则需要确保为ajax定义了"type"选项,以确保将其设置为type: 'DELETE'
,否则jQuery.ajax()将默认使用"POST"。请参见此处:http://api.jquery.com/jquery.ajax/
编辑:只是指出"action"属性只是将表单指向它应该发布到的URL,它没有定义它应该使用的METHOD(post、GET、PUT、DELETE)。