簡體   English   中英

Ajax請求在Laravel中產生404

[英]Ajax request yields 404 in Laravel

我試圖在用戶單擊按鈕后更新SQL表。 我正在使用Laravel,無法使ajax調用正常工作,即我收到404響應。 我當前的方法是將請求路由到將其傳遞到控制器的Route。 有人可以幫我理解我的錯誤嗎?

路線

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

CONTROLLER

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>                   

您的路線定義了以下URL:

器/控制器/的AccountController

而且您的AJAX正在提交以下網址:

/控制器/ userManagementAjax

因此,您應該在ajax調用中收到404錯誤。

路由中的as語法僅表示命名路由 Route::post調用的第一個參數應該是您所期望的URI,而不是控制器名稱(控制器名稱應在第二個數組參數的uses鍵中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,只要依賴它們的其他所有內容都引用該名稱而不是URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM