laravel模态删除确认不会去破坏路由

时间:2014-09-04 16:18:48

标签: jquery laravel bootstrap-modal

当我运行此代码并注释掉模态对话框脚本时,我会看到我的控制器消息弹出。当我使用脚本尝试它时,会出现模态弹出窗口,但单击确定或取消不会执行任何操作。我怀疑这与" attr(' action')"有关。但我无法找到它的文档,我不知道如何让它路由到控制器。我尝试过改变行动'去摧毁'并且'删除'但那没有用。

          <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);}
           });

1 个答案:

答案 0 :(得分:1)

您的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)。