从Ajax调用Laravel 4控制器方法

时间:2014-03-21 15:49:45

标签: jquery ajax controller laravel-4

由于我绝不是阿贾克斯大师,所以我来到这里看看是否有人可以引导我朝着正确的方向寻找有关我想要做的事情的一些信息。我已经搜索了SO寻找信息,但要么我不明白我在读什么,要么它不是我想要做的。老实说,我不知道我想做的事情是否可行,所以是的......

基本上,我想要完成的是从我网站的管理部分将我的应用程序置于维护模式。我正在使用jQuery .click()函数来更新#div,但我也希望同时从控制器调用一个函数。

所以这里......

我现在的jQuery是:

$('#on').click(function () {
    $('#turnedon').addClass('green');
    $.cookie('maint', 'Maintenance', {
        expires: 365
    });
    //alert('You have put the app in maintenance mode.');
    $.ajax({
        method: 'get',      // Should I use post? or get? I am just wanting to run the function when the .click() function is run
        url: '/admins',     // Not sure what should be used for url since I just want to call a function
        error: function(e){
            alert( 'Error ' + e );
            }
        });         
});

我不确定是否应该为方法使用GET或POST,因为我只是从控制器调用方法。

我在控制器中调用的函数:

public function getMaintenanceOn()
{
  if(Request::ajax()) {
    Artisan::call('down');
  }
}

在我的路线中:

Route::get('/admins', array('uses' => 'AdminController@getMaintenanceOn'));

我还在我的global.php文件中设置了只有管理员才能在维护模式下访问该站点。如果我使用终端关闭应用程序,我仍然可以像我需要的那样以管理员身份访问所有内容,但我希望能够将应用程序置于维护模式而无需进入并更改主机文件上的路由

提前致谢!

1 个答案:

答案 0 :(得分:1)

您的javascript中似乎有问题,$.cookie给了我一个错误,但删除它一切正常。这就是我测试的内容:

路线:

Route::get('admins', function() 
{
    Log::info("route!");

    if (Request::ajax()) {
        Log::info("ajax");

        Artisan::call('down');
    }
});

按钮:

enter code here关闭

没有cookie的javascript:

<script>

    $('#on').click(function () {
        alert('You have put the app in maintenance mode.');
        $('#turnedon').addClass('green');
        $.ajax({
            method: 'get',      // Should I use post? or get? I am just wanting to run the function when the .click() function is run
            url: '/admins',     // Not sure what should be used for url since I just want to call a function
            error: function(e){
                alert( 'Error ' + e );
                }
            });         
    });

</script>