【问题标题】:Ajax request yields 404 in LaravelAjax 请求在 Laravel 中产生 404
【发布时间】:2014-09-16 08:04:45
【问题描述】:

我正在尝试在用户单击按钮后更新 SQL 表。我正在使用 Laravel,并且无法使 ajax 调用正常工作,即我得到 404 响应。我目前的方法是将请求路由到将其传递给控制器​​的 Route。谁能帮我理解我的错误?

路线

Route::post('/controllers/AccountController', array(
'as'    =>  'userManagementAjax',
'uses'  =>  'AccountController@deleteAccount'
));

控制器

public function deleteAccount(){
        if($_POST['action'] == "delete") {
        DB::table('users')
            ->where('email', $_POST['email'])
            ->update(array('suspended' => 1));
        echo "ok";
        }
    }

HTML 和 JAVASCRIPT

   <script>
    function rmuser(a) {
    alert('Removing user: '+a);                
    $.ajax({
      url: '/controller/userManagementAjax',
      type: 'POST',
      data: {'action': 'delete', 'email': a},
      success: function(data, status) {
        if(data == "ok") {
          $('#tr'+a).remove();
        }
      },

      error: function(xhr, desc, err) {
        console.log(xhr);
        console.log("Details: " + desc + "\nError:" + err);
      }
    }); // end ajax call
};

</script>

    <button class="btn" onclick="rmuser('some_email')">Delete</button>                   

【问题讨论】:

    标签: php jquery ajax laravel laravel-4


    【解决方案1】:

    你的路由定义了这个 URL:

    /controllers/AccountController

    您的 AJAX 正在提交到此 URL:

    /controller/userManagementAjax

    所以您应该在 ajax 调用中遇到 404 错误。

    您的路由中的as 语法仅表示named route。 Route::post 调用的第一个参数应该是您期望的 URI,而不是控制器名称(控制器名称应该在第二个数组参数的 uses 键中使用)。

    我认为这就是你想要的路线:

    Route::post('/controllers/userManagementAjax', array(
        'as'    =>  'user.delete',
        'uses'  =>  'AccountController@deleteAccount'
    ));
    

    第一个字符串参数必须与您尝试使用 AJAX 发布到的 URL 匹配。

    要利用命名路由,您现在可以重定向到 user.delete 或生成指向路由 user.delete 的链接,如下所示:

    // Redirect to named route from controller
    return Redirect::route('user.delete');
    
    // Display link in blade template to named route
    <a href="{{ URL::route('user.delete') }}">Delete User</a>
    

    使用命名路由的好处基本上是您可以随意更改您的 routes.php 文件中的 URL,只要依赖它们的所有其他内容都引用 name 而不是 URL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 2017-05-30
      • 2019-09-15
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      相关资源
      最近更新 更多