2014-09-04 27 views
2

当我使用注释掉的模式对话框脚本运行此代码时,我看到我的控制器消息弹出。当我用脚本尝试时,出现模式弹出窗口,但单击确定或取消不会执行任何操作。我怀疑这是与“attr('action')”有关的,但我找不到它的文档,也不知道如何让它路由到控制器。我试图改变'行动'到'销毁'和'删除',但没有奏效。laravel modal删除确认不会破坏路由

  <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的工匠把它路由显示

URI: DELETE users/{users} | Name: users.destroy | Action: [email protected] 

如下所示更改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

你的Routes.php文件是什么样子的?

确保您有Route::delete('users/{id}', ['uses' => '[email protected]', 'as'=>'users.destroy']);

其次,如果你正在使用AJAX,你需要确保你定义AJAX,以确保它被设置为type: 'DELETE'否则jQuery.ajax(在“类型”选项)将使用“POST”通过默认。看到这里:http://api.jquery.com/jquery.ajax/

编辑: 只要指出'action'属性只是指向它应该发布的URL的形式,它没有定义它应该使用的METHOD(POST,GET,PUT,DELETE) 。

+0

谢谢!我更改了jquery行,将类型设置为DELETE,并删除了该操作,现在它可以工作。 – Phil 2014-09-04 18:07:44

+0

实际上我很快就会谈到,插入该行打破了模式确认,但继续显示控制器弹出消息 – Phil 2014-09-04 18:16:06

+0

不知道如果jQuery的更改工作。尝试'$ .ajax({url:url,type:“DELETE”});'同时检查当你取消确认时,看看实际返回的结果。 – bgallagh3r 2014-09-04 22:33:34